问题标签 [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 投票
3 回答
17732 浏览

c# - C# Alpha Blend 透明图片框

我的表单上显示了一个网络摄像头提要,并想在其上绘图。我打算使用图片框来做到这一点,我发现 PictureBox 不支持真正的透明度,而只是它所在表单的颜色。它也不支持字母混合,这是我希望它显示的方式,类似于表单的显示方式。

有谁知道如何做到这一点?或者有一个可以做到这一点的控件?

0 投票
1 回答
1898 浏览

gdi+ - 来自另一个图像的 Gdiplus 掩码图像

有没有办法使用另一个图像的 alpha 来操作图像的 alpha?

假设我有一个图像,我想改变它的 alpha 从左边不透明开始在右边完全透明,目前我用 LinearGradientBrush 绘制另一个图像,并通过逐个像素循环从第二个图像设置原始图像的 alpha,在 Gdiplus 中有另一种方法吗,一些图像蒙版,或混合两个图像的阿尔法?

结论:在 GDI+ 中似乎没有办法混合两个图像,唯一的方法似乎是通过像素迭代的手动方式。

0 投票
2 回答
3832 浏览

c++ - iPhone OpenGL ES 不正确的 alpha 混合

我在 iPhone 上使用 openGL ES 的 alpha 混合结果不正确。

这是我创建纹理对象的代码:

'tex_data' 是从使用 zlib 打包的原始 RGBA8888 数据加载的。它按应有的方式加载,我已经用调试器进行了检查。

这是我在渲染之前设置纹理的代码:

我已经上传了我所期望的和我在这里得到的样本:sample。在示例中,底部的大部分纹理都是漆黑的,不透明度为 70%。然而,openGL 将其呈现为灰色。这个问题会影响我使用的所有纹理。

我已经使用 OGLES PVRVFrame 在 Windows 上测试了代码,结果符合预期:黑色呈现为黑色。

0 投票
2 回答
1174 浏览

cocoa - 是否有在 GTK 和 OSX 上进行每像素 Alpha Blend 的 API?

我想在 Linux (GTK) 和 OSX 上绘制透明窗口(带 alpha 通道)。有没有 API 可以做到这一点?请注意,我不想设置全局透明度,应该按像素设置 alpha 级别。

我正在寻找与 Windows 上的 UpdateLayeredWindow 函数相同类型的 API,如下例所示:Per Pixel Alpha Blend

0 投票
2 回答
417 浏览

c# - 有人可以帮我修改一个开源软件(KeePass)吗?

你知道 KeePass Password Safe 2 吗?它是开源的,我正在尝试做一些事情,但我遇到了死胡同,无法找到代码在哪里执行此操作以及它为什么要执行此操作。

源代码在这里,它是用 C# 编码的:http: //downloads.sourceforge.net/keepass/KeePass-2.08-Source.zip

问题是 TreeView 节点和 ListView 条目的图标如果来自 alpha 混合的 PNG 文件,则无法正确呈现。例如,我创建了一个 16x16 的图像并填充了纯红色但透明度为 50%,并将其保存为 PNG。然后将此图标添加到 TreeView 节点之一,KeePass 以灰色显示此图标。

如您所知,我不是此应用程序的作者,并且无法发布特定的代码块,因为我不知道哪个可能导致问题,就像我说的那样,我不知道这是从哪里来的。

有人可以帮我吗?

编辑:
我想我在这里找到了问题:http: //www.codeproject.com/KB/miscctrl/AlphaImageImagelist.aspx

0 投票
1 回答
1446 浏览

java - 将多个图像组合成一个图像以供以后绘制,并使用 alpha 混合

我有一个用于 Java 的图形系统,它允许通过指定多个图像来为对象“贴上墙纸”,这些图像可以应用(相对)复杂的对齐和调整大小选项。

为了充分发挥作用(尤其是在功率非常低的设备上),我在第一次绘制壁纸时将图像绘制到内部图像,然后将该合成图像复制到目标图形上下文以将其放到屏幕上。只有在调整对象大小时才会重新创建合成,因此后续重绘的唯一工作是将剪切区域从合成复制到目标图形上下文。

该解决方案非常有效,除了当我有具有 alpha 通道透明度的 PNG 图像时,在绘制复合材料时 alpha 通道会丢失 - 也就是说,复合材料的所有像素都完全不透明。因此,随后复制到屏幕上的图形上下文无法让墙纸对象背后的内容显示出来。

我确实设法使用 RGBImageFilter 过滤掉完全透明的像素,但我看不到一个解决方案来使混合透明度工作。

有谁知道我可以用完整的 alpha 通道绘制图像,并在两个具有 alpha 值的像素重叠时合并?

0 投票
2 回答
5261 浏览

delphi - 在 Delphi 中淡入 alpha 混合的 PNG 形式

几年前,当 Vista 首次发布时,我问了一个关于这个问题的问题,但从未解决过这个问题,并将其搁置为以后考虑的问题。

我有一个启动画面,我努力让它看起来很棒。这是一个 32bpp 的 alpha 混合 PNG。我有一些代码(如果需要,我可以挖掘!)在关闭桌面组合时在 Windows XP 或 Vista+ 下运行良好。然而,在 Vista+ 下,所有透明部分都是黑色的,破坏了它看起来很棒的一切!

所以,我的问题是这样的:因为任何人都能够将 32bpp alpha 混合的 PNG 显示为启动屏幕,并且在激活和不激活桌面组合的情况下都可以使用?如果需要,我不反对使用第三方组件,无论是免费的还是其他的。

理想情况下,这将在 Delphi 7 中工作。

更新:除了下面的答案很好,我发现 TMS TAdvSmoothSplashScreen 组件也很好地处理了这个任务,如果有点复杂的话。

0 投票
1 回答
1509 浏览

java - 如何使用 J2ME (CDC/PP 1.1) 创建 alphablending BufferedImage

我有一个使用创建的 BufferedImage

我使用多个其他图像组装了一张壁纸。它在 Jave SE 中运行良好,但是当我尝试在 J9 CDC/PP 平台上运行代码时,我发现 Personal Profile BufferedImage 没有构造函数!

谁能指出我如何使用CDC 1.0 和Personal Profile 1.1 构建 alpha 通道支持图像?


编辑:现在我已经创建了处理 NoSuchMethodError(等)的后备代码,然后简单地使用 GraphicsConfiguration.createCompatibleImage(int,int) 创建一个图像。可能是这样创建了一个 alpha 混合图像,但由于其他优先事项,我还需要几周的时间才能专门测试它(在手持设备上进行测试不是我的直接责任,所以它不在我的控制范围内)。

如果我找到更好的答案,我会将其发布为对此的答案;同时,如果其他人超过我,请放心,如果它有效,我会接受你的答案,并且在可预见的未来我会对答案感兴趣(我预计在 2-5 年内仍需要答案) .

0 投票
4 回答
6007 浏览

c# - Windows 窗体:使光标位图部分透明

我想在拖放操作中使用部分透明的图像。这一切都设置好了,工作正常,但实际转换为透明度有一个奇怪的副作用。出于某种原因,像素似乎与黑色背景混合。

下图描述了该问题:

透明度问题

图 a) 是原始位图。

图 b) 是执行 alpha 混合后产生的结果。显然,这比预期的 50% alpha 滤镜要暗得多。

图 c) 是所需的效果,图像 a) 具有 50% 的透明度(使用绘图程序添加到合成中)。

我用来生成透明图像的代码如下:

有谁知道为什么 alpha 混合不起作用?

更新一:

为清楚起见,如果我在绘制的表面上进行字母混合,则代码确实有效。问题是我想从现有图像创建一个完全半透明的图像,并在拖放操作期间将其用作动态光标。即使跳过上面的内容,只绘制一个填充颜色为 88ffffff 的矩形,也会产生深灰色。图标有些可疑。

更新二:

由于我已经研究了很多并相信这与 Cursor 的创建有关,所以我也将在下面包含该代码。如果我在调用 CreateIconIndirect 之前对位图进行 GetPixel 采样,则四个颜色值似乎完好无损。因此,我感觉罪魁祸首可能是 IconInfo 结构的 hbmColor 或 hbmMask 成员。

这是 IconInfo 结构:

这是实际创建光标的代码:

两个外部函数定义如下:

0 投票
1 回答
4486 浏览

java - java swing图形颜色混合

我有一堆形状,我用不同的图形对象渲染。我想要它,所以当形状重叠时,它们会使用一些 alpha 混合来组合颜色。但是,我只希望它们与其他形状混合,而不是与其他任何渲染。这可能吗?

谢谢,

杰夫