gpt4 book ai didi

c++ - DeviceContext (HDC) 中的 Alpha channel

转载 作者:可可西里 更新时间:2023-11-01 13:24:13 26 4
gpt4 key购买 nike

请帮助我处理 HDC 中的 alpha channel 。我让 HDC dc 抛出 CreateCompatibleDC。比调用 CreateDIBSection 可以在内存中找到图像字节。比调用 DrawFrameControl 到这个 dc。一切正常,但在内存中每个像素有 4 个字节,alpha channel 填充为 00。即使之前有 FF。但我需要 alpha channel 。我怎样才能使 DrawFrameControl 设置真正的 alpha 值或只是不触摸它们。谢谢你。抱歉英语不好:(

最佳答案

您不能让 GDI 不写入每像素四字节位图的 alpha/保留字节。 GDI 并不是真正的 alpha 感知,除了像 AlphaBlend 这样的几个函数。 .但是,您可以使用它写入并将 alpha 重置为 0 的知识来了解它写入了哪些像素,然后手动修复 alpha。

有关更多信息,请阅读以下三篇文章:

前两个可能会为您提供足够的信息来实现您想要的。

这些文章采用通用方法来使用 GDI 函数处理 alpha,通过扫描 alpha 被破坏的像素并修复它(并采用更高级的技术来绘制多个具有正确 alpha 的东西。) FrameRect绘制一个矩形,其中线条的宽度和高度均为一个单位。您可能会发现使用线条绘制效率更高,甚至直接编辑内存中的像素位图以在内存中绘制直线。这避免了必须为 GDI 绘制的像素扫描整个位图 - 毕竟,由于它是一个具有一个单位宽边的矩形,您已经确切地知道哪些像素将被绘制到,并且可以自己编辑它们。

关于c++ - DeviceContext (HDC) 中的 Alpha channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118935/

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