问题标签 [alphablending]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1527 浏览

direct3d - 在 Direct3D 中实现 Porter-Duff 规则

应该使用哪些 Direct3D 渲染状态来实现 Java 的 Porter-Duff 合成规则(CLEAR、SRC、SRCOVER 等)?

0 投票
1 回答
2083 浏览

winforms - 在 alpha 混合表单上显示控件

我尝试了 Visual C# Kicks代码的 alpha 混合形式。这有效(一旦我删除该TransparencyKey属性);也就是说,我可以使用 W3C 的PNG alpha 测试图像并查看下面的其他窗口,但会使表单上的所有控件不可见。据推测,它们根本没有被绘制,就像OnPaint被覆盖一样。我尝试调用超类的OnPaint

,但这并没有改变任何东西。MyBase.OnPaint (先打电话也没有任何区别。)

不幸的是,大多数关于 alpha 混合表单的文章都集中在没有任何控件的纯启动屏幕上——但我们需要一个面板,它首先显示登录字段,然后是进度条。

顺便说一句,控件不需要透明度。只有在外部边缘,PNG 的透明度才真正重要。因此,通过在这一切之上添加另一种形式(两者总是串联移动)来伪造这一点可能就足够了,但我更喜欢更平滑的解决方案。

0 投票
2 回答
4245 浏览

opengl - OpenGL:如何在不更改目标 alpha 的情况下进行 RGBA->RGBA 位图

我有一个 OpenGL RGBA 纹理,我使用帧缓冲区对象将另一个 RGBA 纹理粘贴到它上面。问题是,如果我使用通常的混合函数和 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA), 生成的 blit 会导致目标纹理 alpha 发生变化,使其对于之前 alpha 为 1 的地方稍微透明。我希望目标表面 alpha 永远不会改变,否则效果RGB 值应该与GL_SRC_ALPHA和完全一样GL_ONE_MINUS_SRC_ALPHA。所以混合因子函数应该是 (As,As,As,0) 和 (1-As,1-As,1-As,1)。我怎样才能做到这一点?

0 投票
3 回答
1706 浏览

qt - Qt 中具有完整 alpha 的动画?

Qt(使用 v4.4)中是否支持支持完整 Alpha 通道的动画格式?GIF 只有一位透明,我认为 Qt 不支持 APNG。更新:似乎支持 MNG,但它比 APNG 更不受欢迎!也许 SVG 是我最好的选择。

0 投票
2 回答
4828 浏览

graphics - 多个像素的 alpha 混合公式是什么?

我有许多 RGBA 像素,每个像素都有一个 alpha 分量。

所以我有一个像素列表:(p0 p1 p2 p3 p4 ... pn)其中 p_0_ 是前面的像素, p_n_ 是最远的(在后面)。

最后一个(或任何)像素不一定是不透明的,因此生成的混合像素也可以是透明的。我从列表的开头到结尾进行混合,反之亦然(是的,它是光线追踪)。因此,如果结果在任何时候变得足够不透明,我可以以足够正确的结果停止。我将以这种方式应用混合算法: (((( p0 @ p1 ) @ p2 ) @ p3 ) ... )

谁能建议我一个正确的混合配方,不仅适用于 R、G 和 B,而且适用于 A 成分?

UPD:我想知道对于确定的混合颜色过程,我们怎么可能有很多公式?这是某种近似吗?对我来说,这看起来很疯狂:公式并没有太大的不同,以至于我们真正获得了效率或优化。任何人都可以澄清这一点吗?

0 投票
6 回答
22932 浏览

mfc - 如何绘制 32 位 alpha 通道位图?

我需要创建一个自定义控件来显示带有 alpha 通道的 bmp 图像。背景可以用不同的颜色绘制,图像有阴影,所以我需要真正“绘制”阿尔法通道。

有人知道怎么做吗?

如果可能的话,我还希望使用 alpha 通道信息创建一个蒙版,以了解鼠标是点击了图像还是透明区域。

任何形式的帮助将不胜感激!

谢谢。

已编辑(JDePedro):正如你们中的一些人所建议的那样,我一直在尝试使用 alpha blend 来绘制带有 alpha 通道的位图。这只是我实施的一个测试,我从资源中加载 32 位位图,并尝试使用 AlphaBlend 函数对其进行绘制:

这只是一个测试,所以我将代码放在对话框的 OnPaint 中(我还尝试了 CDC 对象的 AlphaBlend 函数)。

不透明区域被正确绘制,但在位图应该透明的地方我得到白色。

有什么帮助???

这是一个屏幕截图..它不容易看到,但蓝色圆圈周围有一个白色矩形: alt text http://img385.imageshack.us/img385/7965/alphamh8.png

行。我得到了它!我必须为 alpha 值预乘每个像素。有人可以建议优化的方法吗?

0 投票
5 回答
10487 浏览

webkit - 是否可以使用 WebKit 在清晰的背景上呈现网页内容?

我正在尝试评估 WebKit 补丁的可能性,该补丁将允许所有渲染的图形渲染到完全透明的背景上。

期望的效果是呈现完全没有任何背景的 Web 内容,它应该看起来漂浮在桌面上(或浏览器窗口后面显示的任何内容)。

有人见过这样的应用吗?(我能想到一些可以的终端仿真器。)如果有人在 WebKit 内部工作过(或者可能是 Gecko?),你认为有可能做到这一点吗?


更新:我开始意识到 Mac OSX 仪表板小部件使用这种精确的技术。所以,这一定是可能的。


更新 2:我在 linux 上编译了 WebKit 并注意到配置选项包括:

我越来越近了。任何人都可以帮忙吗?


更新 3:我继续在各种相关邮件列表的帖子中找到对此的引用。

0 投票
1 回答
1499 浏览

mfc - 创建自定义透明控件

我正在尝试创建一个自定义控件,该控件显示具有每像素 alphablend 的位图(正如你们中的一些人已经知道的其他问题)。

现在我在资源编辑器中使用了一个自定义控件,并将它附加到一个从 CWnd 派生的类。当我注册我的自定义类时,我将 WNDCLASS 结构的 hbrBackground 设置为 NULL_BRUSH 以实现控件的透明度。

在控件的 OnPaint 中,我使用 AlphaBlend 绘制每像素 alpha 混合位图。

这工作得很好,但我有这两个问题:

  • 当鼠标悬停在控件上时,我想更改显示的位图。由于控件是透明的,因此一个位图未与另一位图重叠的区域不会被擦除。更改图像时如何擦除背景?

  • 第二个问题与两个重叠的控件有关。我的控件被绘制在具有渐变的其他控件上(实际上是在其他控件内部)。问题是,如果我将控件放在 z 顺序之前,其他控件会与我的控件重叠并且我的控件不会显示。如果我将另一个控件放在 z 顺序之前,我无法在我的控件中获取鼠标消息。

也许我做错了什么,或者我尝试实施控制的方式错了。任何形式的帮助将不胜感激。

谢谢,

哈维尔

0 投票
1 回答
544 浏览

gdi - 如何通过 StretchDIBits 模仿缩略图周围的阴影?

我现在正在编写一个图像查看器,它用于查看缩略图。由于它很丑,我决定画阴影圆形缩略图。

有背景色。我正在使用 StretchDIBits 在缩略图的位置绘制阴影图像。然而,它覆盖了背景颜色真的很烦人......当背景是白色时,它看起来很完美。但如果背景不是白色的,它有一个白色的边框。

所以我使用 AlphaBlend,首先将阴影图像绘制到 DC 上,然后使用 AlphaBlend 到背景上。但是,我仍然可以看到白色边框。

不管背景是什么,有什么理由要生成完美的阴影。

0 投票
2 回答
7526 浏览

pygame - pygame 中的混合模式是什么意思?

Surface.blit在 1.8 中有一个新参数:blend。定义了以下值:

  • BLEND_ADD
  • BLEND_SUB
  • BLEND_MULT
  • BLEND_MIN
  • BLEND_MAX
  • BLEND_RGBA_ADD
  • BLEND_RGBA_SUB
  • BLEND_RGBA_MULT
  • BLEND_RGBA_MIN
  • BLEND_RGBA_MAX
  • BLEND_RGB_ADD
  • BLEND_RGB_SUB
  • BLEND_RGB_MULT
  • BLEND_RGB_MIN
  • BLEND_RGB_MAX

有人可以解释这些模式的含义吗?