Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使自定义位图按钮字段使用透明背景?_Java_Blackberry_Bitmap_Transparent_Buttonfield - Fatal编程技术网

Java 如何使自定义位图按钮字段使用透明背景?

Java 如何使自定义位图按钮字段使用透明背景?,java,blackberry,bitmap,transparent,buttonfield,Java,Blackberry,Bitmap,Transparent,Buttonfield,我有一个完全可以工作的自定义位图按钮字段,但是,图像后面的背景显示为白色矩形。我已经找到了它使颜色变白的地方,但我不知道如何使它完全透明。有什么想法吗?我正在用blackberry java JDE 5.0编程 仅供参考按钮图像是一个圆角png文件,在角上使用透明度 代码: 确保绘制方法使用drawARGB在屏幕上绘制位图。我遇到了一个类似的问题,结果是drawRGB和drawBitmap没有使用alpha通道,因此不会使任何内容保持透明。您正在使用 graph.setColor(Color.W

我有一个完全可以工作的自定义位图按钮字段,但是,图像后面的背景显示为白色矩形。我已经找到了它使颜色变白的地方,但我不知道如何使它完全透明。有什么想法吗?我正在用blackberry java JDE 5.0编程

仅供参考按钮图像是一个圆角png文件,在角上使用透明度

代码:


确保绘制方法使用drawARGB在屏幕上绘制位图。我遇到了一个类似的问题,结果是drawRGB和drawBitmap没有使用alpha通道,因此不会使任何内容保持透明。

您正在使用

graph.setColor(Color.WHITE);

 graph.fillRect(0, 0, getWidth(), getHeight());
方法,它将创建一个白色矩形

我认为您需要删除此代码

如果您仍然无法找到问题,那么我将提供另一个自定义位图字段示例

您已经实现了

protected void drawFocus(Graphics g, boolean on)


您还指定了聚焦状态的背景图像。您可以删除paintBackground和drawFocus的实现。此外,可以从“绘制”方法中删除将图形颜色设置为白色并填充矩形的线条。也就是说,您只需要在paint方法上绘制位图图像。我已经修改了您的代码,您可以检查我是否没有测试它。

不过我没有使用drawRGB,我会发布我的代码,以便您更好地了解我使用的是什么:您使用的是“graph.drawBitmap…”,我相信它最终会使用drawRGB。您需要直接实现像素绘图-使用getARGB。。。在位图上,然后使用graph.drawARGB…@MichaelDonohue,通常,如果我使用透明的PNG图像,drawBitmap方法工作良好,并在绘制时处理alpha通道信息。如果我通过getARGB和setARGB操作图像的数据透明度,该方法也可以工作。您已经实现了受保护的void drawFocusGraphics g、boolean on和受保护的void paintBackgroundGraphics g。您还指定了聚焦状态的背景图像。您可以删除paintBackground和drawFocus的实现。此外,可以从“绘制”方法中删除将图形颜色设置为白色并填充矩形的线条。也就是说,您只需要在paint方法上绘制位图图像。我已在此处修改了您的代码。你可以检查一下我没有测试它。Rupak工作得很好!非常感谢你,伙计。我试图在这里给你荣誉,但它不让我:
protected void drawFocus(Graphics g, boolean on)
protected void paintBackground(Graphics g)