Java:GC透明背景

时间:2012-11-01 23:41:13

标签: java swt

我正在使用GC(org.eclipse.swt.graphics.GC)将一些图片组合成一个图像(使用drawImage)。问题是,默认情况下GC有白色背景。是否可以将背景设置为透明?或者任何其他解决方案,从一张图片切割部分并粘贴到第二张?

2 个答案:

答案 0 :(得分:1)

简单来说,GC是一支笔,笔无法控制画布的透明度。它只能在画布上绘制一些东西。因此,GC无法操纵图像本身,只需GC可以在Image上绘制内容。

但是,您可以使用ImageData API直接控制透明度数据。 你应该知道除了ImageData上的setPixel(x,y,pixel),setAlpha(x,y,alpha)之外没有高级绘图API。

答案 1 :(得分:1)

您可以使用没有背景的画布

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

然后你可以(就像在这个example中)使图像的一种(或多种)颜色透明。

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);