2

GC(org.eclipse.swt.graphics.GC)を使用して、いくつかの画像を1つの画像に結合しています(drawImageを使用)。問題は、デフォルトでGCの背景が白になっていることです。背景を透明に設定することはできますか?または、1つの画像から一部を切り取って、2番目の画像に貼り付ける他の解決策はありますか?

4

2 に答える 2

1

簡単に言うと、GCはペンであり、ペンはキャンバスの透明度を制御できません。キャンバスに何かを描くことしかできません。したがって、GCは画像自体を操作することはできず、GCだけが画像に何かを描画できます。

ただし、ImageDataAPIを使用して透明度データを直接制御できます。ImageDataのsetPixel(x、y、pixel)、setAlpha(x、y、alpha)以外に高度な描画APIがないことを知っておく必要があります。

于 2012-11-09T09:12:36.883 に答える
1

背景のない Canvas を使用できます

Canvas canvas = new Canvas(parent, SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND);

そして、(こののように) 画像の 1 つ (または複数) の色を透明にすることができます。

ImageData ideaData = new ImageData(getClass().getResourceAsStream("Idea.jpg"));
int whitePixel = ideaData.palette.getPixel(new RGB(255,255,255));
ideaData.transparentPixel = whitePixel;
Image transparentIdeaImage = new Image(display,ideaData);
于 2014-06-21T14:03:34.627 に答える