GDI+初始化bitmap对象

Bitmapbitmap_origin(L"aaa.bmp");constintHEIGHT=bitmap_origin.GetHeight();constintWIDT... Bitmap bitmap_origin(L"aaa.bmp");
const int HEIGHT=bitmap_origin.GetHeight();
const int WIDTH=bitmap_origin.GetWidth();
获得的高和宽都为零,是不是因为没有初始化Bitmap对象?应该怎么弄?
展开
 我来答
任明星Ming
推荐于2018-11-30 · TA获得超过798个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:1149万
展开全部

你这个都没指定图片的路径。这里有个装载图片的例子,指定路径及图片的后缀名即可。

	/////////////////////////////////////////////////////////////////////
// Defined class for GDI Plus Image.
class CImageHelper
{
// Constructor and destructor.
public:
CImageHelper() : m_pImage(NULL), m_pBitmap(NULL)
{

}

~CImageHelper()
{
DeleteOldImage();
}

// Data members.
public:
Image* m_pImage;
Bitmap* m_pBitmap;

// Operations.
private:
void DeleteOldImage()
{
if (m_pBitmap)
{
delete m_pBitmap;
m_pBitmap = NULL;
m_pImage = NULL;
}
}

public:
// Load image from resource manager.
Image* Load_Image(ATL::_U_STRINGorID resource, ATL::_U_STRINGorID type = (UINT) 0)
{
DeleteOldImage();

// Load image from path.
if ( HIWORD(resource.m_lpstr) != NULL)
{
m_pImage = new Image(resource.m_lpstr);
if (m_pImage != NULL)
{
m_pBitmap = static_cast<Bitmap*>(m_pImage);
return m_pImage;
}

ATLASSERT(FALSE);
return NULL;
}
// Load PNG, JPG or JPEG...
else if (type.m_lpstr != NULL && type.m_lpstr != RT_BITMAP)
{
CResource res;
if( !res.Load(type, resource) ) return NULL;

DWORD dwSize = res.GetSize();
HANDLE hMemory = ::GlobalAlloc(GMEM_MOVEABLE, dwSize);
if( hMemory == NULL ) return NULL;

// Copy resource to memory.
memcpy(GlobalLock(hMemory), res.Lock(), dwSize);
GlobalUnlock(hMemory);

// Create stream that write to image.
IStream* pStream = NULL;
CreateStreamOnHGlobal(hMemory, TRUE, &pStream);
m_pBitmap = new Bitmap(pStream);
m_pImage = static_cast<Image*>(m_pBitmap);
pStream->Release();
}
else
{
// This only loads BMP resources
m_pBitmap = new Gdiplus::Bitmap(_Module.GetResourceInstance(), (LPCWSTR) (UINT) resource.m_lpstr);
m_pImage = static_cast<Image*>(m_pBitmap);
}

return m_pImage;
}

inline float GetWidth()
{
return (float)m_pImage->GetWidth();
}

inline float GetHeight()
{
return (float)m_pImage->GetHeight();
}
};


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式