gpt4 book ai didi

java - 如何在SWT中使用圆角填充矩形实现透明度?

转载 作者:太空宇宙 更新时间:2023-11-04 07:46:18 25 4
gpt4 key购买 nike

我正在使用 SWT 4.2 Tree 小部件。我需要将颜色代码与列表中的每个 TreeItem 相关联。我使用 TreeItemsetImage(...) 来执行此操作,并按如下方式创建图像:

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 的背景设置为透明,但填充的矩形是透明的。

我做错了什么?如何使填充矩形外部的区域透明,以便填充圆角矩形外部的图像角在出现在 Tree 列表中时正确透明?

最佳答案

您可以执行“颜色到 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);

如果您担心这可能会影响您绘制的图像中包含的颜色,请首先使用您知道图像中不包含的独特颜色为背景着色。

关于java - 如何在SWT中使用圆角填充矩形实现透明度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15236861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com