【发布时间】:2014-04-03 20:46:02
【问题描述】:
我仍在努力学习 WinAPI 及其各种库,我现在正试图弄清楚 GDI+。作为一个简单的测试,我正在尝试从文件中加载图像并将其绘制到屏幕上。
这是我正在使用的代码(下面有解释):
int x=0, y=0;
Image* sprite=Image::FromFile((WCHAR*)"MyImage.png");
Graphics g(dc);
std::cout<<"(x, y)=("<<x<<", "<<y<<")"<<std::endl; // Debug output
std::cout<<"(w, h)=("<<sprite->GetWidth()<<", "<<sprite->GetHeight()<<")"<<std::endl; // Debug output
g.DrawImage(sprite, x, y, (int)sprite->GetWidth(), (int)sprite->GetHeight());
所以 dc 是我正在绘制的 HDC,通过 BeginPaint() 获得。这绝对没问题,因为我可以使用该 HDC 用 Ellipse() 绘制一个椭圆,并且它显示得很好。我已经输出了精灵变量的值,它应该是一个非空指针。
奇怪的是,上面的输出显示图像的宽度和高度都是 0。这是什么原因造成的?我想也许图像没有正确加载,所以我尝试对 FromFile() 参数使用绝对路径和相对路径,但没有任何改变。我也尝试从 PNG 切换到 BMP,但那里也没有任何变化。
发生了什么事?
EDIT 刚刚测试过,如果我将图像加载为 Image* sprite=new Image(L"Path_To_Image");它工作正常。为什么它不适用于 FromFile?
【问题讨论】:
-
您的两个代码示例对字符串做了完全不同的事情。 Winapi 提示:永远不要使用字符串!
标签: c++ winapi graphics gdi+ gdi