【发布时间】:2013-03-06 00:35:47
【问题描述】:
我正在使用 SWT 4.2 Tree 小部件。我需要将颜色代码与列表中的每个 TreeItem 相关联。我正在使用TreeItem 的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 中的项目时,这一点尤其明显,因为选择的颜色使白色角落非常明显。
我在创建GC 之前尝试过使用Image.setBackground(...),因为该方法的文档指出:“设置将透明像素映射到的颜色”。但是,据我所知,将颜色设置为白色或设置图像的TreeItem 的颜色(无论如何都是白色)没有任何效果。我还尝试在上面的代码中设置 GC 的 alpha 值,但似乎无法获得正确的咒语来将 GC 的背景设置为透明但填充的矩形 not 是透明的。
我做错了什么?如何使填充矩形之外的区域透明,以便填充圆角矩形之外的图像角在出现在Tree 列表中时正确透明?
【问题讨论】: