我正在使用SWT 4.2 Tree
小部件。我需要将颜色代码与列表中的每个TreeItem
相关联。我正在使用TreeItem
的{{1}}执行此操作,其中的图像创建如下:
setImage(...)
实际效果很好,除了一个细节:角落外面圆角矩形不透明 - 它们保持白色。效果是带有白色条纹的圆形颜色方块。当用户选择private Image createImage(int imageSize)
{
Image image = new Image(Display.getDefault(), imageSize, imageSize);
GC gc = new GC(image);
gc.setAntialias(SWT.ON);
gc.setBackground(... a Color object ...);
gc.fillRoundRectangle(0, 0, imageSize, imageSize, 5, 5);
gc.dispose();
return image;
}
中的项目时,这一点尤其明显,因为选择颜色使白色角落非常明显。
我在创建Tree
之前尝试使用Image.setBackground(...)
,因为该方法的文档指出:“设置映射透明像素的颜色”。但是,将颜色设置为白色或设置图像的GC
的颜色(无论如何恰好是白色)都没有效果,据我所见。我也尝试在上面的代码中设置TreeItem
的alpha值,但似乎没有得到正确的咒语将GC的背景设置为透明但是填充的矩形不是透明的。
我做错了什么?如何使填充矩形外部的区域透明,以使填充圆角矩形外的图像角在GC
列表中显示时是否正确透明?
答案 0 :(得分:1)
您可以执行类似“颜色到alpha /透明度”的操作,许多照片编辑工具都可以执行此操作:
如果您想了解更多详情,请阅读本文:Taking a look at SWT Images
这样的事情应该有效:
ImageData data = yourImage.getImageData();
// Assuming the corners are white
int whitePixel = data.palette.getPixel(new RGB(255,255,255));
data.transparentPixel = whitePixel;
Image transparentImageCorners = new Image(display, data);
如果您担心这可能会影响您绘制的图像中包含的颜色,请先使用您知道的图像中未包含的颜色为背景着色。