CreateBitmap创建的位图,画出来的彩色图效果很差是什么原因?
1.声明保存位图的指针
unsigned char *g_pSheet_bits = NULL;
2.取得位图信息保存在char指针所指的区域
if (!g_pSheet_bits) {
g_pSheet_bits = new unsigned char[client_w * client_h * 4];
}
memset(g_pSheet_bits, 0, sizeof(char) * client_w * client_h * 4);
::GetBitmapBits(wbuf_bitmap, client_w * client_h * 4, g_pSheet_bits);
3.根据取得位图信息创建CBitmap对象,使用CreateBitmap方法创建,
CBitmap m_bitmap;
m_bitmap.CreateBitmap(rc.Width(), rc.Height(), 1, 32, g_pSheet_bits); // 第3,4个参数可以这样设置吗?第4个参数设置为24,64, 256等报参数错误。
TRACE("--------- %d \n", GetLastError());
4.在onPaint函数中通过BitBlt画bitmap
CPaintDC dc(this);
CDC memDc;
memDc.CreateCompatibleDC(&dc);
CBitmap *pOldBit;
pOldBit = memDc.SelectObject(&m_bitmap);
dc.BitBlt(m_bmpRect.left,
m_bmpRect.top,
m_bmpRect.Width(),
m_bmpRect.Height(),
&memDc,
0,
0,
SRCCOPY);
memDc.SelectObject(pOldBit);
以上就是所有的画图操作,在dialog对话框中的onPaint函数中画的。
画出的图虽然是彩色的但只有一个轮廓,效果非常差。
请问是什么愿意?