- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一些 PNG 图像加载到 WinAPI ImageList
中,作为要在 ListView
中显示的元素的图标。我用 Gdiplus
做这个,我遇到的问题是质量很差。就像颜色深度减少了之类的。
我是这样做的(在从 WinMain
调用的函数中,就在循环之前):
HIMAGELIST hLarge;
HIMAGELIST hSmall;
hLarge = ImageList_Create(GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON),
ILC_MASK, 1, 1);
hSmall = ImageList_Create(GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
ILC_MASK, 1, 1);
ListView_SetImageList(hWndListView, hLarge, LVSIL_NORMAL);
ListView_SetImageList(hWndListView, hSmall, LVSIL_SMALL);
HICON hIconItem
Gdiplus::Bitmap *bitmap = new Gdiplus::Bitmap(image_path, 0);
bitmap->GetHICON(&hIconItem);
ImageList_AddIcon(hSmall, hiconItem);
ImageList_AddIcon(hLarge, hiconItem);
现在,我遗漏了什么以及图像在哪里丢失了信息?
我已将 ILC_MASK
更改为 ILC_MASK | ILC_COLOR32
。质量好一点,但没有消除锯齿。
最佳答案
您的 PNG 很可能是 32 位颜色。在您的 ImageList_Create()
调用中,使用标志 ILC_COLOR32 | ILC_MASK
,不仅仅是ILC_MASK
。
根据 MSDN ,如果您不指定其中一个 ILC_COLORxxx
标志,则默认为 ILC_COLOR4
,即 4 位 16 色图形。这解释了您降低的图像质量。显式指定 ILC_COLOR32
将为您提供所需的全彩色图标。
关于c++ - 从 PNG 加载 Gdiplus 的 HICON 质量低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488003/
作为一个更大项目的一部分,我试图从现有的 HICON 创建一个 HICON,首先将该图标绘制到 HBITMAP,然后将其转换回 HICON。 (这将允许我修改图标,例如,通过在其上绘制文本。) 不幸的
我想在系统托盘中显示一个图标。 看起来应该这么简单,但我不知道如何创建一个 HICON 并绘制它!所有“兼容位图”、“兼容 DC”等东西让我很困惑。 如何绘制图标? 最佳答案 无需过多介绍,您可以使用
我正在尝试为任何文件获取一个图标(如 HICON),以与资源管理器完全相同的方式绘制它。这意味着如果我有一个 exe 文件的路径,我应该绘制它的默认图标。如果我有一个链接 (.lnk) 文件,我必须绘
我有一个由 HICON 标识的图标我想以自定义控件为中心绘制的句柄。 如何确定图标的大小以便计算正确的绘图位置? 最佳答案 这是一个 C++ 版本的代码: struct MYICON_INFO {
我有一个 HICON,我想将其用作另一个 HICON 的叠加层,以创建结果 HICON。结果 HICON 然后将用于“所有者绘制”控件(注意:它不使用图像列表)。覆盖图标具有透明颜色 RGB(0, 2
我使用 minGW 和 eclipse。我用这种方式制作了 HICON: case WM_CREATE: { ... hIcon = (HICON)LoadImage(NULL, "icon.ico"
我正在使用不支持 DPI 的按钮。我在我的代码中到处都在使用它,所以理想情况下我想在该按钮的 SetIcon 中添加几行。 SetIcon 方法(不出所料)将 HICON 作为参数 - 我想根据 DP
我在内存中有一个 .ico 文件的内容作为 const char*,我希望从中创建一个 HICON数据。我目前的做法是将数据写入一个临时文件,然后使用LoadImage。是否可以直接从内存中创建图标?
我们有什么方法可以将 HICON 或 HCURSOR 转换为字节数组,我用谷歌搜索了所有方法我没有找到一个通用的解决方案,下面我尝试转换HICON 颜色和掩码 BITMAP 到字节数组并通过套接字发送
我想定义 Win32 窗口的应用程序图标,例如通过使用 GCL_HICON 调用 SetClassLong 并将句柄传递给图标(参见 MSDN 上的 SetClassLong Function)。 这
我在内存中有一个 PNG 编码的图标作为字节数组。从这个字节数组创建 HICON 对象的推荐方法是什么? 假想的加分,如果你知道没有 ATL 或 GDI+ 的解决方案...:) 最佳答案 HGLOBA
我正在使用 IShellItemImageFactory 来提取文件的图标。我能够成功提取它并在对话框中使用SendDlgItemMessage(hDlg,IDC_STATIC2, STM_SETIM
我的最终目标是在JNA库的帮助下获得Java中HWND的图标。一切工作正常,除了一件重要的事情:我需要图标的大小以便在 Java 中进行进一步的处理步骤。 看来我无法要求尺寸。我总是得到大小 0x0。
我正在尝试从系统中获取图标。通过使用 SHGetFileInfo 我得到了 HICON, 我用下面的代码测试了这个 HICON: SHFILEINFO info; //For getting i
我正在从 .exe/.dll 中提取一个图标,并想将其保存在一个 .ico 文件中。执行此操作的最佳方法是什么? 我尝试使用 ::OleCreatePictureIndirect(),然后使用 IPi
对于 x64 目标构建,从“OLE_HANDLE”转换为“HICON”的正确方法是什么? 特别是对于普通的 C 风格转换,我在使用 x64 配置编译时收到此警告: 警告 C4312:“类型转换”:从“
我知道已经有一个 question like this .但它的解决方案不适合我,因为使用 Sehellfolder Methode 你只能得到 16x16 和 32x32 大小的图标。我提取了一个大
如何在VC++中将HICON转成HBITMAP? 我知道这是一个常见问题解答,但我在 Google 上找到的所有解决方案都不起作用。我需要的是一个接受参数 HICON 并返回 HBITMAP 的函数。
我正在开发一个 C/S 应用程序,C++ 中的服务器和 C# 中的客户端,我需要发送一些有关当前正在运行的进程和相关图标的信息。感谢 EnumWindows 我得到了图标文件,回调中有这段代码...
我正在尝试将一些 PNG 图像加载到 WinAPI ImageList 中,作为要在 ListView 中显示的元素的图标。我用 Gdiplus 做这个,我遇到的问题是质量很差。就像颜色深度减少了之类
我是一名优秀的程序员,十分优秀!