dr racket中的位图

dr racket中的位图,racket,Racket,如何在dr racket中的框架(gui)上加载位图??? 请提供必要的代码和参考资料……我承认,我很难在文档中找到正确的位置来为您指明方向。这里有一些代码可以做到这一点,但我暗自怀疑有一种更简单的方法可以做到这一点: #lang racket (require racket/draw mred) ;; define a canvas that displays a bitmap when its on-paint ;; method is called (define b

如何在dr racket中的框架(gui)上加载位图???
请提供必要的代码和参考资料……

我承认,我很难在文档中找到正确的位置来为您指明方向。这里有一些代码可以做到这一点,但我暗自怀疑有一种更简单的方法可以做到这一点:

#lang racket

(require racket/draw
         mred)

;; define a canvas that displays a bitmap when its on-paint
;; method is called
(define bitmap-canvas%
  (class canvas%
    (init-field [bitmap #f])
    (inherit get-dc)
    (define/override (on-paint)
      (send (get-dc) draw-bitmap bitmap 0 0))
    (super-new)))

;; load the bitmap
(define bitmap (read-bitmap "/tmp/red-arrow.bmp"))

;; create a new frame (top-level window)
(define f (new frame% [label "foo"] [width 100] [height 100]))

;; create a canvas
(define the-canvas (new bitmap-canvas% [parent f] [bitmap bitmap]))

;; show the canvas
(send f show #t)
更新:Matthew Flatt建议:可以使用带有位图的“message%”作为标签。这当然是更少的代码。这取决于你要带着这个去哪里

#lang racket/gui

(define bitmap (read-bitmap "/tmp/red-arrow.bmp"))

(define f (new frame% [label "Bitmap"]))
(new message% [parent f] [label bitmap])
(send f show #t)

我承认,我很难在文件中找到合适的位置来给你指点。这里有一些代码可以做到这一点,但我暗自怀疑有一种更简单的方法可以做到这一点:

#lang racket

(require racket/draw
         mred)

;; define a canvas that displays a bitmap when its on-paint
;; method is called
(define bitmap-canvas%
  (class canvas%
    (init-field [bitmap #f])
    (inherit get-dc)
    (define/override (on-paint)
      (send (get-dc) draw-bitmap bitmap 0 0))
    (super-new)))

;; load the bitmap
(define bitmap (read-bitmap "/tmp/red-arrow.bmp"))

;; create a new frame (top-level window)
(define f (new frame% [label "foo"] [width 100] [height 100]))

;; create a canvas
(define the-canvas (new bitmap-canvas% [parent f] [bitmap bitmap]))

;; show the canvas
(send f show #t)
更新:Matthew Flatt建议:可以使用带有位图的“message%”作为标签。这当然是更少的代码。这取决于你要带着这个去哪里

#lang racket/gui

(define bitmap (read-bitmap "/tmp/red-arrow.bmp"))

(define f (new frame% [label "Bitmap"]))
(new message% [parent f] [label bitmap])
(send f show #t)