gpt4 book ai didi

c++ - 如何将两个 HICON 合二为一

转载 作者:行者123 更新时间:2023-11-28 03:54:18 27 4
gpt4 key购买 nike

我有一个 HICON,我想将其用作另一个 HICON 的叠加层,以创建结果 HICON。结果 HICON 然后将用于“所有者绘制”控件(注意:它不使用图像列表)。覆盖图标具有透明颜色 RGB(0, 255, 0)。

我如何在 native C++ 中执行此操作(我只找到显示如何使用托管代码执行此操作的资源)。

最佳答案

基本同意peterchen的回答,但有几点说明:

  1. 没有理由使用 DIB(除非您是通过改变位直接合成图像,而不是使用 GDI 函数绘图)。
  2. 您应该记住 GetIconInfo 实际上在您的进程中创建图标的拷贝而不是位图。您有责任在不再需要时删除它们。
  3. 除非您要将生成的 HICON 传递给标准控件或其他进程,否则根本不需要创建此类。相反,最好使用位图(可能还有 mask )。

了解图标和位图之间的区别很重要。

  • 位图是一个 GDI 对象。它在您的流程中有效。
  • Icon 是一个 User 对象,它的范围不限于你的进程。它包装了一个位图和一个可选的 mask 。

有几种图标类型:

  1. 最简单的,由单个位图组成,按原样绘制。
  2. 位图+ mask , mask 标记纯色/透明像素
  3. 32 位位图,带 alpha channel
  4. 单色位图 + mask 。位图 + 掩码定义了所谓的 AND-XOR 运算(在目标表面上执行)。

因此,在您获得图标的内容(通过 GetIconInfo)之后,您应该发现实际的图标类型,因为每个选项都需要不同的处理。

关于c++ - 如何将两个 HICON 合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4229156/

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