C++ 如何从资源文件(.rc文件)加载位图?
我正在VisualStudio中编写一个简单的游戏,我已经设置了一个资源文件(.rc文件),我也在使用sdl2。我想知道是否有办法加载或绘制资源文件中的位图。提前谢谢 我目前正在使用这一行:C++ 如何从资源文件(.rc文件)加载位图?,c++,visual-studio,sdl-2,C++,Visual Studio,Sdl 2,我正在VisualStudio中编写一个简单的游戏,我已经设置了一个资源文件(.rc文件),我也在使用sdl2。我想知道是否有办法加载或绘制资源文件中的位图。提前谢谢 我目前正在使用这一行: HBITMAP hBtMpIMG = LoadBitmap((HINSTANCE)getModuleHandle(_T("Project 1.exe")), MAKEINTRESOURCE(IDB_BITMAP1)); 如何使用sdl2呈现hBtMpIMG?您可以使用API:LoadBitmap加载存储在
HBITMAP hBtMpIMG = LoadBitmap((HINSTANCE)getModuleHandle(_T("Project 1.exe")), MAKEINTRESOURCE(IDB_BITMAP1));
如何使用sdl2呈现hBtMpIMG?您可以使用API:
LoadBitmap
加载存储在可执行文件中的位图:
case WM_CREATE:
{
HBITMAP hBtMpBall = LoadBitmap((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDB_BALL)); //Here we have to use the executable module to load our bitmap resource
//this means that this resource "ball.bmp" is compiled and stored in the executable module"
//however if you use loadimage you can ignore this module and makeit null because you are laoding from file
if(!hBtMpBall)
MessageBox(0,"ball.bmp not found!",0,0);
}
break;
- 在资源文件中:
您可能会有这样的结果:.rc
#include "myres.h" IDB_BALL BITMAP DISCARDABLE "ball.bmp"
HBITMAP
hhandle或类似内容。然后,如果您再搜索一点,我相信您会找到一些东西来将HBITMAP
转换为SDL2可以使用的东西。您可能需要将HBITMAP
转换为BITMAP
,以便将其传递给SDL。此外,SDL是一种兼容性工具,可用于在Windows和其他操作系统中编程。如果您使用的是Windows特定的函数,那么您最好使用Windows函数打印位图。或者坚持使用SDL并从文件中加载位图。如果我使用SDL创建窗口等,这仍然有效吗?您最好在示例中添加DeleteObject(hBtMpBall)
,这是避免资源泄漏的必要条件。@BarmakShemirani:是以避免资源耗尽。