如何将png资源加载到CBitMap中?当我尝试这个它不起作用.
CImage image;
image.LoadFromResource(AfxGetInstanceHandle(), IDB_PNG1);
bitmap.Attach(image.Detach());
Run Code Online (Sandbox Code Playgroud)
它给了我一个找不到的错误资源类型.有没有其他方法来加载PNG资源?
小智 18
如果您使用的是VS2008或更高版本(MFC功能包),则可以使用CPngImage从中派生CBitmap并包含的内容<afxtoolbarimages.h>
#define AFX_PNG_RESOURCE_TYPE _T("PNG")
Run Code Online (Sandbox Code Playgroud)
LoadFromResource在内部使用LoadImage,不管文档说什么,它上次尝试时都不支持PNG.你可以链接到CxImage(看看codeproject)但是它的工作很少,实际上没什么好处.
我最后做的是忘记PNG,使用AlphaConv将PNG转换为32位Windows位图并使用CImage.另外一个好处是你可以在MFC中使用CBitmapButton等而不需要任何转换.
另一种破解方法是将资源内容提取到临时文件,然后使用CImage :: Load从那里读取它.如果我抓住你在我的一个代码库中这样做,我会打你的脸;但是;)
| 归档时间: |
|
| 查看次数: |
14445 次 |
| 最近记录: |