当前位置: 首页 > 知识库问答 >
问题:

在Pixmap上使用“drawPixel”时的透明度?

蒋承教
2023-03-14

我正在创建一个应用程序,在其中手动布局纹理图集。关键是图像本身不应该是透明的,因为它有一个一致的背景颜色,然后应该在代码中删除。

我遇到的问题是,我似乎无法从我正在处理的Pixmap中删除像素,使其透明。我已经确保对我的Pixmap格式使用RGBA_8888,这肯定会支持透明性。

这是我遇到麻烦的一段代码:

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

很明显,0x00000000即使从十六进制转换为十进制,也会是零。这是同一个数字!

根据我的观察,我注意到drawPixel方法将一个像素绘制到当前像素上。我想要的是它变得透明。使用前面提到的代码,它将透明性吸引到一些不透明的东西上,结果什么都没有改变。就好像你什么都没添加一样,这个东西仍然存在。

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

也许有人能给我指出正确的方向,告诉我如何让Pixmap的像素透明?

共有1个答案

夔桐
2023-03-14

正如您已经发现的,您无法在现有像素上绘制混合透明像素,因为您看不到任何东西。所以首先需要禁用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);
 类似资料:
  • 问题内容: 我有一个不透明度为0.8 的 容器 。在背景上,我的图像通过内容div发光。现在,我在此 容器中 有我的客户的照片。问题在于,它使用父元素的不透明度,因为此图像的不透明度只是相对于容器而不是相对于主体。 我有以下代码: 如下所述,这不起作用。 有人知道吗? 问题答案: 通过将其更改为以下内容解决了此问题: 仅使用rgba alpha而不是不透明度。现在可以了。

  • 我是java图形新手,目前正在开发一款游戏。从本质上讲,有上升的泡沫,用户必须通过移动鼠标来弹出它们。 我已经在JFrame上制作了一个动画,我需要在上面为MouseMotionListener添加一个JPanel。然而,当我将JPanel添加到JFrame的顶部时(即使setOpaque设置为false),它仍然不能让我看到下面的动画。你可以在下面看到我的代码。如果你发现编码错误,请告诉我。 我

  • 问题内容: 我正在使用下面的代码来显示图像,但是标签似乎有背景,这是我所不希望的。 和文件https://imgur.com/a/JR4Hc 问题答案: 这并不是说不能显示透明图像,而是标签具有自己的背景颜色,该背景颜色不透明或与其父对象相同。一种解决方法是将其父级的bg用作其自身的bg:

  • 我有一个问题,使JComboBox透明。我尝试设置不透明为false和背景0的alpha,但它不起作用。我想我需要改变一些类,做渲染或类似的东西。这是代码...

  • 我们有一个TextView,其中包含应用程序资源中的可抽屉-左和可抽屉-右。在一些设备上 运行Android 4.1.2的索尼Xperia L, 三星Galaxy Young或 三星Galaxy SII 我们正面临一个奇怪的问题。可拉拔件将显示为半透明/透明。在其他设备上,如 三星Galaxy S4(4.4.2)或 HTC ONE V(4.0.3) 可抽屉将正确显示。 这是布局定义的剪裁: 在HT

  • 问题内容: 何时使用语句而不是准备语句。我想在没有参数的查询中使用语句,但是为什么不使用预处理语句呢?对于没有参数的查询,哪一个更快。 问题答案: 我想在没有参数的查询中使用语句,但是为什么不使用预处理语句呢? 还差得远 对于返回结果集或更新计数的INSERT,UPDATE和DELETE语句,使用PreparedStatement。正如Joachim所指出的,它们不适用于DDL语句,也不适用于应使