问题标签 [alpha]

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 投票
1 回答
1882 浏览

java - Java 2D 图形中的“屏幕”效果

这是一个困扰我一段时间的问题:

在 Photoshop/GIMP 中,有一个“屏幕”图层合成模式。此模式具有明亮的颜色具有强 alpha,而深色则具有弱的 alpha。黑色是完全透明的,白色是完全不透明的。

我非常希望能够使用 Java 2D 图形复制这种复合材料,但是我反复尝试将 AlphaComposite 引入其中的尝试都失败了——事实上,我认为这超出了 AlphaComposite 的能力范围。

可以在这里看到一个视觉示例。

关于如何做到这一点的任何想法?

0 投票
2 回答
2045 浏览

winapi - 透明的顶层窗口

我想创建一个透明的顶级(即不是 WS_CHILD)窗口。但是,我不希望它是一个简单的蒙版,其中给定的像素要么是完全透明的,要么是完全不透明的。而且我不希望整个窗口都具有一定的 alpha 级别。相反,我希望窗口基本上是完全透明的,并使用 alpha 通道绘制位图,以便位图与它后面的任何窗口混合。比如说,一个朝阳,图像自身的 alpha 从中心向外从不透明混合到完全透明。

我发现了两种方法都接近我想要做的,但不完全是。使用区域,我可以切出一个完全透明的部分。使用分层窗口,我也可以做类似的事情(甚至可以使整个窗口稍微透明,但这根本不是我想要的)。我研究了其他样式,例如 WS_EX_TRANSPARENT 和 WS_EX_COMPOSITE,但无济于事。

我可以让这种效果在子窗口上正常工作,因为它们在其父区域内与其父窗口混合。让它在顶级窗口中以类似方式工作仍然让我难以理解。

我知道这是可以做到的,因为人们向我保证他们已经在其他程序中看到了它。我觉得我只是没有完全理解这里关于绘画窗户的简单事情。

0 投票
5 回答
2100 浏览

c# - 正则表达式 - 仅当字符串包含任何字母字符时才匹配字符串

示例字符串

我想捕获第一个和第三个但不是第二个,因为它不包含任何字母字符请帮助

0 投票
1 回答
1426 浏览

delphi - Inscriber 技术通过 Builder 和 Delphi - Alpha 通道支持

我正在与 Inscriber Technology 的 Via Builder 合作。此应用程序将 TGA 序列动画合并到一个 .via 文件中,从而更好地加载大型序列,因为此文件已优化。有一些插件可以将其与某些 Adob​​e 产品一起使用。

我正在研究 Delphi,我的问题是我无法从帧中取回原始的 alpha 通道。使用他们的 VIACODECLib_TLB 库,我有以下功能:

来自 IViaFile 接口。这个函数应该从原始序列返回一个帧位图的句柄。以下代码可以工作:

但生成的位图是没有 Alpha 通道的原始帧。实际上,整个图像的 alpha 通道为零。

假设我做错了什么,我尝试使用 GetDIBits 函数,以确保某处有一个 alpha 通道。所以我分配了足够长的内存来存储位图,假设它有 4 个通道并使用 GetDIBits 函数。我得到了和以前一样的结果:正常帧,整个图像的 alpha 通道为零。

请注意,Inscriber(其论坛已死)声称其 Via Builder 具有完整的 alpha 支持。我知道有人设法在 C++ 上使用 GetDIBits 函数正确加载帧,但是将代码“翻译”为 Delphi 不起作用。

任何帮助将非常感激。

谢谢你。

0 投票
5 回答
1888 浏览

bitmap - 如何以编程方式检测位图是否具有 Alpha 通道?

作为主体。最好使用 C 代码。

0 投票
3 回答
3349 浏览

windows - 使用分层窗口创建平滑的窗口边框

我们正在开发一个皮肤应用程序,在它的大部分窗口上都有各种圆边。我正在使用窗口区域来定义非矩形形状,但几乎每个人都反对由此导致的锯齿状混叠,因为像素只能是完全不透明或完全透明的。

我想出了一个使用分层窗口的解决方案,但我们希望确保它可以在各种系统上运行(并希望运行良好),我想看看是否有人有更好的想法或方法优化我正在做的事情。我知道分层窗口需要win2000或更高版本,这很好,因为这已经是其他原因的要求。从一些基本测试来看,它在 Vista 上看起来没问题,但这还不能保证。

这就是我所做的:我有一个窗口,称之为 A,带有控件和文本以及包含该窗口的任何内容。我将窗口 B 作为窗口 A 的子窗口,但它具有 WS_POPUP 样式而不是 WS_CHILD,因此它可以将自身定位在 A 的区域之外并绘制在 A 的控件之上。窗口 B 也有 WS_EX_LAYERED 样式,在初始化时,我调用带有 ULW_ALPHA 标志的UpdateLayeredWindow和带有 32 位位图和 alpha 通道的源 DC,以使其使用每个像素的 alpha 进行绘制。

用于窗口 B 的源 DC 中的位图几乎只是窗口边框周围的像素,我希望将其从窗口的背景平滑地混合为完全透明的像素。我会跳过整个两个窗口的方法,只使用一个分层窗口,除了当你使用 UpdateLayeredWindow 时,它是从保存在内存中的缓冲区中绘制的,而不是典型的 WM_PAINT 消息和所有这些,并试图得到交互式子控件(和子窗口)可以很好地工作,这听起来很麻烦(甚至可能不适用于所有事情)。

所以,它基本上是带有所有子控件的窗口 A 和其他任何东西,窗口 B 直接浮动在它上面,绘制了一个漂亮的平滑边框。我通过移动窗口 B 来响应 WM_MOVE 消息等,并且我禁用了窗口 B,因此它永远无法获得焦点或输入(点击已经通过,因为它的部分不透明度为零,例如大多数它的内部零件,已经被排除在采摘之外)。

对于踢球,这就是这些碎片的样子,以更好地展示我的意思。

所以,它有效,但我不能确定它真的是最好的方法。我有两个问题:

  • 这听起来可以接受吗,还是有什么可怕的地方?
  • 由于它目前的工作原理,它似乎正在使用一个窗口大小的屏幕外缓冲区(最高可达 1024x768),即使它的极少数像素具有任何非零不透明度数据 - 是否值得开销以及将其切割成单独的边界块并将它们组合在一起的额外复杂性?
0 投票
1 回答
3417 浏览

iphone - 在 iPhone 上使用 alpha 通道捕获 EAGLview 内容

已经在这个问题上苦苦挣扎了很长一段时间,到目前为止还没有找到答案。基本上,我想做的是捕获我的 EAGLview 的内容,然后用它来将它与其他图像合并。无论如何,主要问题是,在我的 EAGLview 中透明的所有内容在将其保存到相册或将其放入 UIImageView 时都会呈现不透明。让我与您分享一些代码,我在其他地方找到了:

}

正如我已经提到的,这完美地抓取了我的 EAGLview 的内容,但我无法获得具有 alpha 值的图像。

任何帮助表示赞赏。谢谢!

0 投票
5 回答
7703 浏览

c++ - 如何从OpenGL中的纹理中删除黑色背景

我正在寻找一种方法来删除 24 位位图的背景,同时保持主图像完全不透明,到目前为止,混合已经达到了目的,但现在我需要保持主要位不透明。我在谷歌上搜索过,但没有发现任何帮助,我想我可能正在搜索错误的术语,所以任何帮助将不胜感激。

编辑:是的,对不起,我现在使用黑色作为背景。

0 投票
2 回答
1378 浏览

flash - 在单选按钮标签上设置 alpha

我正在尝试将 AS3 中某些单选按钮的 alpha 设置为 50%。问题是单选按钮标签不会改变。

有人知道怎么修这个东西吗?

0 投票
3 回答
2538 浏览

opengl - 如何在opengl中分离颜色和alpha混合功能?

在尝试将我的 2D 阴影渲染技术从 Directx 移植到 Opengl 的过程中,我遇到了一个问题,我似乎无法很好地访问 opengl 混合器。

但首先,为了使以下内容有意义,我的算法:

我在不使用深度缓冲区的情况下从后到前对所有精灵进行排序和渲染。阴影精灵在投射它们的对象之前绘制,并使用下面的第二个混合状态 gShadowBlendState。这使得它们只将它们的 alpha 值绘制到帧缓冲区上的 alpha 通道。

常规对象的精灵使用下面首先指定的 gBlendState,它只是一个常规的 alpha 混合到后缓冲区。但是,它们也会从后缓冲 Alpha 通道中移除 Alpha,使其不透明。这可以确保阴影不会通过它们前面的不透明对象显示出来。

绘制的第三件事是在其他所有内容之后绘制的,是使用阴影颜色和下面的最终混合状态进行渲染的全屏四边形。它使用 backbuffer 的 alpha 通道来实现不透明度,有效地带出之前记录的所有阴影信息。

这个练习的重点是让阴影在它们重叠的地方不会变暗。

反正。我现在正在尝试在 Opengl 中执行此操作。目前我启用了 alpha 混合

但我不确定如何单独说明如何计算颜色和 alpha 分量。所以我的问题是:有没有办法比 glBlendFunc() 更好地控制 OpenGL 中的搅拌机?