gpt4 book ai didi

c++ - 如何绘制禁用图标

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:55 26 4
gpt4 key购买 nike

我终于开始为我们的下拉菜单添加图标了:

menu clip
在此图像中,您可以看到除了突出显示的行之外的所有内容都没有问题。突出显示的线条很好,除了图标是用彩色绘制的,而不是灰色的。

我的代码基于极简主义方法:
http://www.codeproject.com/Articles/16529/Simple-Menus-That-Display-Icons-Minimalistic-Appro?msg=4166441#xx4166441xx

基本上,这只需要我绘制图标,而不必使用自定义代码来管理菜单项的所有方面。非常漂亮。

除了选择禁用(灰色)菜单项时,它适用于我们的目的。
但是当菜单项变灰并被选中时,绘制的图标将显示为启用时的样子。错误的。 :(

然而,当背景被突出显示/选择时,完全相同的绘图代码会起作用。

这让我相信 HDC 中完全包含一些声明,它们必须控制图标的显示方式 - 因为以下代码在所有条件下都有效,但被选中:

::DrawIconEx(lpdis->hDC, lpdis->rcItem.left+0, lpdis->rcItem.top, pIcon->GetHandle(), pIcon->GetSize().cx, pIcon->GetSize().cy, 0, NULL, DI_NORMAL);

有谁知道 HDC 中封装了什么状态来控制 DrawIconEx 的功能?如果我可以在未选择绘图时复制选定绘图期间的 HDC 状态,我应该能够生成灰色图标,而无需诉诸 30-50 行手动灰度化内存中图标的实现。

最佳答案

您可以使用:

DrawState(...)

API 函数,带有 DSS_DISABLED 标志,但我不确定输出的质量。

关于c++ - 如何绘制禁用图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9436490/

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