2

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

4

2 回答 2

1

简单来说,GC就是一支笔,笔无法控制画布的透明度。它只能在画布上绘制一些东西。所以,GC 不能操作 image 本身,只是 GC 可以在 Image 上绘制一些东西。

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

于 2012-11-09T09:12:36.883 回答
1

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

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

然后您可以(如在此示例中)使图像的一种(或多种)颜色透明。

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 回答