|
本帖最后由 qqwwzzxx 于 2018-7-16 21:02 编辑
如题,预设的数组,通过下面的代码在窗口上画灰度图,直接加载图片资源显示是没有问题的。换成数组显示全白,不论什么数据。哪位兄弟做过指点一下,比较急。环境VC++6
void CCh9Demo6View::OnDraw(CDC* pDC)
{
// TODO: add draw code for native data here
unsigned char image[30*30];
CBitmap bitmap; //创建CBitmap对象
bitmap.CreateBitmap(30,30,1,1,image);//黑白可以??????????????
// bitmap.CreateBitmap(30,30,1,8,image);//8位灰度不行
CDC dcMemory;
//bitmap.LoadBitmap(IDB_BITMAP1); //加载位图资源,
dcMemory.CreateCompatibleDC(pDC); //创建内存设备环境
dcMemory.SelectObject(& bitmap); //将位图选入内存设备环境中
pDC->BitBlt(0,0,250,234,&dcMemory,0,0,SRCCOPY); //将内存设备环境复制到当前设备环境中
// pDC->TextOut(40,240,"原始位图图像");
}
CreateBitmap函数的说明。
CBitmap::CreateBitmap
BOOL CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitcount, const void* lpBits );
返回值:调用成功时返回非零值,否则为0。
参数: nWidth 指定位图的宽度(以像素数为单位)。
nHeight 指定位图的高度(以像素数为单位)。
nPlanes 指定位图中的彩色位面数。
nBitCount 指定位图中每个像素颜色的位数。
lpBits 指向一个短整型数组,数组中记录了位图的初始位值。如果为NULL,则新的位图没有被初始化。
说明:
本函数用指定的宽度、高度和位模式初始化依赖于设备的内存位图。
对彩色位图来说,参数nPlanes和nBitcount要有一个被设置为1。如果二者都被设置为1,则建立一个黑白位图。
虽然不能为显示设备直接选中一个位图,但可以调用CDC::SelectObject把位图置为内存设备上下文(memory device context)的当前位图,然后调用CDC::BitBlt函数把它拷贝到任何兼容的设备上下文中。
终止用CreateBitmap建立的CBitmap对象,先要从设备上下文中移出该位图,然后删除该对象。
要了解有关的更详细信息,请参阅BITMAP结构中对成员bmBits的描述。BITMAP结构在成员函数CBitmap::CreateBitmapIndirect中的说明。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)
|