2011-03-15 38 views
1

我需要一些基本的東西來處理Racket中的GUI庫。(Dr)Racket中的GUI元素

  1. 如何將回調函數設置這樣的按鈕:

    (define next (new button% [parent frame] [label "Next ->"])) 
    
  2. 我怎麼畫在畫布上的東西,它已經創造了這樣的後:

    (define canvas (new canvas% [parent frame] 
        [paint-callback canvasdc])) 
    
    (define canvasdc (lambda (canvas dc) 
        (send dc set-text-foreground "black") 
        (send dc draw-text "Some title!" 0 0) 
    )) 
    

    我需要繪製(重新調整jpeg,或者,如果不能的話)複合形狀,並在按下每個按鈕時用其他東西重新繪製事件

回答

1
  1. 有一個可選的callback參數的按鈕構造函數。

  2. 請參閱http://docs.racket-lang.org/draw/overview.html。但是我很困惑你的問題,因爲你發佈的代碼包括繪製到畫布。對於圖像,具體而言,read-bitmap將從文件讀取位圖; draw-bitmap會將位圖繪製到DC中。你可以通過調用set-scale來獲得它(連同其他繪圖到該DC)。如果你正在繪製的DC是bitmap-dc(我不認爲認爲canvas-dc是,但我不是一個球拍專家,可能是錯誤的),那麼你可以直接使用draw-bitmap-section-smooth做到這一點。

+0

謝謝。回調參數如何被調用?我如何重畫畫布?這個我不清楚。 – 2011-03-15 23:12:36

+0

回調獲得兩個參數:按鈕對象和事件對象。我認爲只有在按鈕被點擊時纔會被調用,所以你可以忽略事件參數(除非你關心它被點擊的按鈕,我猜)。您可以隨時在畫布DC上繪製東西,系統將在稍後更新屏幕。有一種'flush'方法可以在需要時立即強制更新,還有一種'refresh-now'方法強制調用畫布的paint回調,然後(可選)刷新完成。免責聲明重申:我不是一個球拍專家。 – 2011-03-16 08:49:33

+0

再次感謝。我現在明白了。你的迴應非常有幫助 – 2011-03-17 10:05:12