Gdiplus::图标资源中的图像
Gdiplus::Image from icon resource?
我正在尝试用gdi+绘制一个图标。当直接从磁盘加载图标文件时,我可以正常工作,但如果可能的话,我希望将图标存储在资源中。有没有一种简单的方法可以在不失去决心的情况下做到这一点?
// The image draws and looks exactly how I want it to
Gdiplus::Image indicator(L"\Indicator.ico");
graphics->DrawImage( &indicator, 7, 7 );
// The image draws, but looks bloated and pixel-y
const HICON hIcon = AfxGetApp()->LoadIcon( IDI_INDICATOR );
if ( hIcon )
{
Gdiplus::Bitmap* bitmap = Gdiplus::Bitmap::FromHICON( hIcon );
graphics->DrawImage( bitmap, 7, 7 );
}
我以前也遇到过类似的位图问题。如果它在从磁盘加载时工作正常,那么几乎可以肯定的是,将它作为资源嵌入会以某种方式破坏它。当您将"已知"图像类型存储为资源时,似乎会发生一些奇怪的事情。在位图的情况下,我发现一些位图标头似乎被剥离了,这意味着如果我使用第三方图像库,我就无法将其作为资源加载。
我最终找到的解决方案是通过手动编辑.rc文件创建一个新的资源类型,并将图标保存为该类型。因此,取而代之的是:
IDR_MAINFRAME ICON "res\Merckx.ico"
你会有这样的东西:
IDR_MAINFRAME USERICN "res\Merckx.ico"
我不知道将其加载为具有资源ID的Gdiplus::Image是否仍然有效。如果没有,您可能需要使用LoadResource()手动加载资源,然后从流中创建Gdiplus::Image对象。这里有一篇关于如何做到这一点的好文章。
希望能有所帮助。我知道这似乎是一个有点奇怪的解决方案,但它值得一试。
相关文章:
- 具有瞬态资源的RAII类
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- QML:设置动画图像源,而不加载资源中的文件
- 如何替换QML(QT)文件上的图像中的图像中没有资源中的图像
- MFC-无法从资源输出BMP图像
- 让主程序知道资源在哪里(图像、数据等)
- 使用 CMake 将资源(例如着色器代码、图像)嵌入到可执行文件/库中
- 从 WinAPI C 项目中的专用 DLL 加载图像资源
- 如果我在Visual Studio项目中将图像作为资源包含在内,这些图像是否会编译到可执行文件中
- 无法加载Qt5/cmake项目中Qt资源文件中指定的图像
- QImage,可以更改资源图像的背景(png/jpg)
- Gdiplus::图标资源中的图像
- 从资源加载图像失败
- 如何从资源中的图像数组中获得一个图像的HBITMAP
- QT资源文件-图像不显示时运行
- 从visual studio IDE运行时,项目无法加载图像资源
- c++位图资源(RT_BITMAP)和PNG图像格式
- 将mat从DLL c++传递到图像资源c#
- 从资源加载图像不起作用(C++ Dll)
- 在代码中嵌入图像,而不使用资源节或外部图像