6

キャンバスの GUI 要素に描画しようとしているときに問題が発生しました。

フレーム、キャンバスを作成し、メソッドを使用してキャンバスの dc コンテキストに描画しようとしましたdraw-lineが、何も起こりません。キャンバスのあるフレームは表示されますが、キャンバスには線が表示されません。

(require racket/gui/base)

(define frame (new frame% [label "Frame"] [width 500] [height 500]))
(define canvas (new canvas% [parent frame]))
(define dc (send canvas get-dc))

(send dc draw-line 10 10 200 200)
(send frame show #t)

上記のコードのどこが間違っているか知っている人はいますか?

4

2 に答える 2

7

問題は、キャンバスの on-paint メソッドへの呼び出しの外側でキャンバスに描画できても、その効果は一時的であることです。ウィンドウの更新が必要なウィンドウ アクティビティ (移動、サイズ変更など) により、描画が消去される可能性があります。

したがって: paint-callback 内からすべてを描画します。

#lang racket
(require racket/gui/base)

(define frame (new frame% [label "Frame"] [width 500] [height 500]))
(define canvas (new canvas% 
                    [parent frame]
                    [paint-callback 
                     (λ(can dc) (send dc draw-line 10 10 200 200))]))
(define dc (send canvas get-dc))
(send frame show #t)

詳細については、canvas クラスのドキュメントを参照してください。

于 2013-04-18T15:07:33.407 に答える