HGLOBAL hBuf = GlobalAlloc(GHND, 512*512*4 * 4);//RGB_32位的
LPDWORD lpBuf = (LPDWORD)GlobalLock(hBuf );
LPDWORD pp = lpBuf;
CBitmap* bitmap;
bitmap = new CBitmap ;
CDC *dcMemory;
dcMemory = new CDC;
dcMemory->CreateCompatibleDC(pDC);
bitmap->CreateCompatibleBitmap(dcMemory,512*2,512*2);
~~~~~~~~~
这里写成pDC,就能正确显示绿色,
用dcMemory,就显示黑白相间的,
颜色不对,这是为什么????
CBitmap* pOldBitmap = dcMemory->SelectObject(bitmap);
for (int k = 0 ; k < 512 * 512 * 4 ; k++)
{
pp[k] = RGB(0,255,0);//底图设为绿色
}//位图矩阵初始化 int result = bitmap->SetBitmapBits( 512*512*4 *4,lpBuf);
pDC->BitBlt(0,0,512*2,512*2,dcMemory,0,0,SRCCOPY); bitmap = dcMemory->SelectObject(pOldBitmap);
LPDWORD lpBuf = (LPDWORD)GlobalLock(hBuf );
LPDWORD pp = lpBuf;
CBitmap* bitmap;
bitmap = new CBitmap ;
CDC *dcMemory;
dcMemory = new CDC;
dcMemory->CreateCompatibleDC(pDC);
bitmap->CreateCompatibleBitmap(dcMemory,512*2,512*2);
~~~~~~~~~
这里写成pDC,就能正确显示绿色,
用dcMemory,就显示黑白相间的,
颜色不对,这是为什么????
CBitmap* pOldBitmap = dcMemory->SelectObject(bitmap);
for (int k = 0 ; k < 512 * 512 * 4 ; k++)
{
pp[k] = RGB(0,255,0);//底图设为绿色
}//位图矩阵初始化 int result = bitmap->SetBitmapBits( 512*512*4 *4,lpBuf);
pDC->BitBlt(0,0,512*2,512*2,dcMemory,0,0,SRCCOPY); bitmap = dcMemory->SelectObject(pOldBitmap);
解决方案 »
- 字符转换
- COM接口函数中,HWND参数传递的问题。
- 100分求解,怎样准确得出一个字符或一组字符的宽度(象素)
- 如何在Picture控件中画图??
- 求教 STL,我在list中使用了结构做元素,现要remove掉一个元素,请问该怎么做,谢谢
- vc 中开3次方的函数是什么?
- 如何实现jpg和bmp等文件格式的缩略图?
- 有谁知道哪有<<INSIDE OLE〉〉电子书下载?
- 求教一个demo程序:对话框上三个edit框,程序起来后把焦点置于第一个edit框,然后回车顺次跳动下个edit框,并在三个edit框中循环,解决就
- 新机64位处理器的不便
- 怎样给每个视加上背景?
- 想在html中调试ATL控件,要求能进入到控件内部,有什么好的方法?
dcMemory->CreateCompatibleDC(pDC);
这时候的dcMemory设备上下文里的调色板只有黑白颜色
所以创建的bitmap->CreateCompatibleBitmap(dcMemory,512*2,512*2);也只有黑白颜色。改为
bitmap->CreateCompatibleBitmap(pDC,512*2,512*2);
新创建的memdc只有两种颜色,必须创建合法dc的兼容dc。
bitmap->CreateCompatibleBitmap(dcMemory,512*2,512*2);这种形式,
因为这样的话,bitmap->SetBitmapBits( 512*512*4 *4,lpBuf);
占用时间很少,因为我需要在2。5秒内,完成512次循环操作,所以对时间上有要求,如果写成bitmap->CreateCompatibleBitmap(pDC,512*2,512*2);
时间要求达不到,多谢大家了。