そのため、既存のキャンバスの描画の上に色付き (赤) の領域を描画したいと思います。その上に赤く着色されたレンズが配置されているように、元の画像が下に表示されるようにします。
問題は、独自のイメージを描画するキャンバスを拡張していて、その上に描画していることです。
これどうやってするの?
そのため、既存のキャンバスの描画の上に色付き (赤) の領域を描画したいと思います。その上に赤く着色されたレンズが配置されているように、元の画像が下に表示されるようにします。
問題は、独自のイメージを描画するキャンバスを拡張していて、その上に描画していることです。
これどうやってするの?
SWT.Paint
単純な解決策は、イベントリスナーをに追加することです。これは、リスナーへCanvas
の呼び出しのシーケンスがわからないため、問題が発生する可能性があるためです (EventTable.hook()
最後に追加する前に、リスナーテーブルの古いスロットを再利用するものを見てください)テーブルの...)。したがって、元のリスナーはリスナーの前または後に実行される可能性があります。
私が試したことはありませんが、うまくいくと信じているより良い解決策Composite
は、オリジナルの上に新しいものを追加しCanvas
てから、このウィジェットにリスナーを追加することPaint
ですComposite
。Canvas
自体。覚えておいてください
Size
にリスナーを追加しCanvas
て、 のサイズComposite
が常に正しいことを確認しますsetBackgroundMode(SWT.INHERIT_FORCE)
するCanvas
あなたのCanvas paint()
方法では、
gc.setAlpha(100)
//値を決めるgc.fillRectangle(rect)
//rect はキャンバスのクライアント領域です私はあなたが探しているものを手に入れるべきだと信じています。