2012-11-07 49 views
2

這是我的代碼:球拍:爲什麼不能設置畫布的背景在Windows

#lang racket 

(require racket/gui) 

(define-values (screen-width screen-height) (get-display-size)) 

(define *app-width* 400) 

(define *app-height* 125) 

(define *vm-frame* (new frame% 
         [label "Test"] 
         [width *app-width*] 
         [height *app-height*] 
         [x (- (quotient screen-width 2) (quotient *app-width* 2))] 
         [y (- (quotient screen-height 2) (quotient *app-height* 2))] 
        )) 

(define frame-canvas% 
    (class canvas% 
    (super-new) 
    (inherit get-dc) 

    (define/override (on-paint) 
     (let ([my-dc (get-dc)]) 
     (send my-dc clear) 
     (send my-dc set-background "black"))))) 

(let ([frame-canvas (new frame-canvas% [parent *vm-frame*])]) 
    (send *vm-frame* show #t)) 

在Mac OS上,這是正常的,顯示出與黑色背景上的應用程序。 但在窗戶上,背景是白色的。 爲什麼?球拍版本是5.3,這是一個5.3的錯誤?

回答

3

顛倒set-backgroundclear的順序。

clear的呼叫使用當前背景的顏色進行填充。如果至少不止一次地調用了你的on-paint,那麼你會觀察到一個黑色的背景,因爲第二次,當前的背景顏色是黑色的。我懷疑這是解釋您觀察到的平臺特定差異的原因。

+0

是的,它的工作,非常感謝。 – simmone