そのため、既存のキャンバスの描画の上に色付き (赤) の領域を描画したいと思います。その上に赤く着色されたレンズが配置されているように、元の画像が下に表示されるようにします。
問題は、独自のイメージを描画するキャンバスを拡張していて、その上に描画していることです。
これどうやってするの?
そのため、既存のキャンバスの描画の上に色付き (赤) の領域を描画したいと思います。その上に赤く着色されたレンズが配置されているように、元の画像が下に表示されるようにします。
問題は、独自のイメージを描画するキャンバスを拡張していて、その上に描画していることです。
これどうやってするの?
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 はキャンバスのクライアント領域です私はあなたが探しているものを手に入れるべきだと信じています。