gpt4 book ai didi

java - 在 Pixmap 上使用 ‘drawPixel’ 时的透明度?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:17 32 4
gpt4 key购买 nike

背景

我正在创建一个应用程序,我在其中手动布局 a texture atlas .重点是图像本身不应该是透明的——它具有一致的背景颜色,然后应该在代码中将其删除。

我遇到的问题是我似乎无法从我正在处理的 Pixmap 中删除像素——使它们透明。我确保使用 RGBA_8888对于我的 PixmapFormat,它肯定支持透明度。

问题

这是我遇到问题的一段代码:

pixmap.drawPixel(x, y, 0x00000000);

很明显,0x00000000 将是零——即使从十六进制转换为十进制——说真的,它是同一个数字!

根据我的观察,我注意到 drawPixel 方法会在当前像素上绘制一个像素。我想要的是让它变得透明。使用前面提到的一段代码,它将透明度绘制到不透明的东西上——最终什么也没改变。就好像你什么都不加一样,东西仍然存在。

研究

像往常一样,我自己做了一些研究。在 Stackoverflow 上,我还没有找到任何有用的东西。我所知道的唯一事情就是上面提到的事情,我通过观察 Pixmap 及其 drawPixel 方法设法找到了。

此外

关于如何使 Pixmap 的像素透明,也许有人可以为我指出正确的方向?

最佳答案

正如您已经发现的那样,您无法在现有像素上绘制混合透明像素,因为您看不到任何东西。所以首先你需要禁用像素图混合。

Pixmap.setBlending(Pixmap.Blending.None); // before you start drawing pixels.

pixmap.drawPixel(x, y, 0x00000000);
// And all pixels you want to draw

Pixmap.setBlending(Pixmap.Blending.SourceOver); // if you want to go back to blending

如果要保持现有像素的 RGB,则必须获取当前像素颜色并仅手动涂黑 alpha 分量:

pixmap.drawPixel(x, y, pixmap.getPixel(x, y) & 0xffffff00);

关于java - 在 Pixmap 上使用 ‘drawPixel’ 时的透明度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41755879/

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