在Racket编程语言中,如何在单独的框架中显示使用2htdp/image库创建的图像?
要点是:
2htdp/image:Racket教学语言的图像库 使用 2htdp/image 创建图像 在 Racket 中的单独 GUI 窗口(框架)中显示该图像 总而言之,问题是:
如何在 Racket 中获取使用 2htdp/image 库创建的图像,并将其显示在单独的、独立的 GUI 框架窗口中?
我正在创建一款类似于 Racket 中的 Catan 的游戏。理想的工作流程是在一帧中显示由 2htdp 图形制作的地图,并在主侦听器 REPL 中处理菜单和玩家操作。每当游戏数据发生变化时,它应该实时更新单独帧中的显示。
你能帮我把上面的描述翻译成英文吗?
请参阅Racket 文档 2.2.6 图像互操作性。您有三个选择:
text%
函数将图像插入到 pasteboard%
或
insert
对象中:#lang racket/gui
(require 2htdp/image)
(define pasteboard (new pasteboard%))
(define frame (new frame%
[label "Example"]
[width 250]
[height 250]))
(define editor-canvas (new editor-canvas%
[parent frame]
[editor pasteboard]))
(send frame show #t)
(define image
(above (triangle 40 "solid" "red")
(rectangle 40 30 "solid" "black")))
(send pasteboard insert image 25 25)
pict
将图像转换为
pict-convert
,然后调用 pict->bitmap
并绘制这样的位图。请注意,您必须需要另一个库 - pict。#lang racket/gui
(require 2htdp/image
pict/convert)
(require (only-in pict
pict->bitmap))
(define image
(above (triangle 40 "solid" "red")
(rectangle 40 30 "solid" "black")))
(define my-bitmap (pict->bitmap (pict-convert image)))
(define frame (new frame%
[label "Example"]
[width 250]
[height 250]))
(define canvas (new canvas% [parent frame]
[paint-callback
(lambda (canvas dc)
(send dc draw-bitmap my-bitmap 0 0))]))
(send frame show #t)
render-image
,由mrlib/image-core提供:#lang racket/gui
(require 2htdp/image
pict/convert)
(require (only-in pict
pict->bitmap)
(only-in mrlib/image-core
render-image))
(define image
(above (triangle 40 "solid" "red")
(rectangle 40 30 "solid" "black")))
(define my-bitmap (pict->bitmap (pict-convert image)))
(define frame (new frame%
[label "Example"]
[width 250]
[height 250]))
(define canvas (new canvas% [parent frame]
[paint-callback
(lambda (canvas dc)
(render-image my-bitmap dc 0 0))]))
(send frame show #t)