首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeviceContext中的α通道(HDC)

DeviceContext中的α通道(HDC)
EN

Stack Overflow用户
提问于 2012-04-12 15:03:18
回答 1查看 2.2K关注 0票数 7

请帮助我在HDC的alpha通道。我让HDC抛出CreateCompatibleDC。然后调用CreateDIBSection,并可以在内存中找到字节的图像。然后调用此dc的DrawFrameControl。所有都有效,但在内存中,每个像素有4个字节,alpha通道填充为00。即使以前有FF。但我需要alpha通道。如何让DrawFrameControl设置实际的Alpha值或不接触它们。谢谢。很抱歉我的英文不好:(

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-12 17:12:49

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

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

  • Transparent Graphics with GDI, Part 1
  • Transparent Graphics with GDI, Part 1 1/2
  • Transparent Graphics with GDI, Part 2

前两个可能会给你足够的信息来实现你想要的。

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10118935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档