gpt4 book ai didi

c++ - 工具栏上的图标不透明

转载 作者:行者123 更新时间:2023-11-28 08:33:10 28 4
gpt4 key购买 nike

我们已经创建了一个 IE 工具栏。我们通过使用静态控件并在其上保留图像来在工具栏上显示一个图标。

由于这个静态控件不是透明的,所以这个图标显示了一些背景色(这是windows常用控件的默认颜色)。

无论浏览器主题如何,都可以使静态控件透明。

项目是用ATL C++开发的。

我们尝试将 WS_EX_TRANSPARENT 作为静态控件的属性,当我们尝试在 OnCtrlColorStatic 事件中返回 null_brush 时,问题仍然没有解决。

最佳答案

嗯,我不太了解 ATL,但在标准的 Windows API 中你会使用 LoadImage加载图像的功能。以下是获取具有透明部分(透明背景)的图像的一些提示:

  1. 图像必须有一个“关键颜色”,并且图像中该颜色的每个像素在显示时都会变得透明。该颜色必须是位于图像左上角的第一个像素的颜色。在使用某些标志调用 LoadImage 时(详见下文),Windows 将加载图像,读取左上角的像素颜色,并使图像中与第一个像素颜色相同的所有像素被隐藏(它们变为透明)。

  2. 当您调用 LoadImage 时,第三个参数必须是 IMAGE_BITMAP 或 IMAGE_ICON,这取决于您使用哪个 GDI 函数来显示图像(图标函数或位图函数)。此外,最后一个标志必须包含 LR_LOADTRANSPARENT 才能正确使用颜色键控。

  3. 按上述方式动态加载图像后,您将拥有此资源的句柄,您可以使用标准 GDI 函数动态绘制静态控件的显示上下文,例如 DrawIconEx,如果您使用 IMAGE_ICON 标志加载它.

希望对您有所帮助。

关于c++ - 工具栏上的图标不透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/876303/

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