カスタム SWT ウィジェットを作成していますが、透過性に問題があります。私のクラスはキャンバスを拡張します。単純に書くと、リソースにアルファ画像を含む png があります。
this.setBackgroundImage(Colors.getMenuButton()); //getMenuButton returns Image object
すべてが正常に機能します (透過性あり) が、オブジェクトのサイズを変更できる必要があるため、関数を作成することにしました。
protected Image BGHelper(Image src) {
Image i2 = new Image(Display.getDefault(),2,26);
GC gc2 = new GC(i2);
Image image = new Image(Display.getDefault(),this.getBounds().width,26);
GC gc = new GC(image);
gc.drawImage(src, 0, 0, 3, 25, 0, 0, 3, 26);
gc2.drawImage(src, 3, 0, 2, 25, 0, 0, 2, 26);
gc.drawImage(i2, 0, 0, 2, 25, 3, 0, this.getBounds().width-6, 26);
gc.drawImage(src,53, 0, 3, 26, this.getBounds().width-3, 0, 3, 26);
gc.dispose();
gc2.dispose();
return image;
}
ソースから左の境界線を切り取って結果に貼り付け、ソースから中央を切り取り、サイズを変更して結果に貼り付け、ソースから右の境界線を切り取って結果に貼り付けます。サイズ変更は機能しますが、透明度はありません (白いピクセル)。なんで?