1

そのため、既存のキャンバスの描画の上に色付き (赤) の領域を描画したいと思います。その上に赤く着色されたレンズが配置されているように、元の画像が下に表示されるようにします。

問題は、独自のイメージを描画するキャンバスを拡張していて、その上に描画していることです。

これどうやってするの?

4

3 に答える 3

1

SWT.Paint単純な解決策は、イベントリスナーをに追加することです。これは、リスナーへCanvasの呼び出しのシーケンスがわからないため、問題が発生する可能性があるためです (EventTable.hook()最後に追加する前に、リスナーテーブルの古いスロットを再利用するものを見てください)テーブルの...)。したがって、元のリスナーはリスナーの前または後に実行される可能性があります。

私が試したことはありませんが、うまくいくと信じているより良い解決策Compositeは、オリジナルの上に新しいものを追加しCanvasてから、このウィジェットにリスナーを追加することPaintですCompositeCanvas自体。覚えておいてください

  • Sizeにリスナーを追加しCanvasて、 のサイズCompositeが常に正しいことを確認します
  • 上で使用setBackgroundMode(SWT.INHERIT_FORCE)するCanvas
于 2013-04-15T11:24:56.107 に答える
1

あなたのCanvas paint()方法では、

  1. 画像を描く
  2. gc.setAlpha(100)//値を決める
  3. gc.fillRectangle(rect)//rect はキャンバスのクライアント領域です

私はあなたが探しているものを手に入れるべきだと信じています。

于 2013-04-15T14:29:27.687 に答える