//hDC为当前窗口的DC句柄//注意,下面创建DC,传入的参数是NULL
//如果下面的函数,采用hDC传入,是没问题
//==>问题就是为什么采用NULL传入之后,进行做的画,贴到hDC后,显示出来的居然还是黑色的,相当于空的??????
HDC hdcMem = CreateCompatibleDC(NULL);//蓝色刷子
HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 255));
RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = bm.bmWidth;
rect.bottom = bm.bmHeight;
FillRect(hdcMem, &rect, hBrush);BitBlt(hDC,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);
解决方案 »
- 讨厌的水波纹
- 一段动态显示窗口的代码,谁能帮忙解释一下?
- 项目默认的字符集
- 请教列表修改
- ListView上实现ToolTip怎么ToolTip一闪就没掉了
- 小弟我诚恳求助:如何将一个程序功能嵌入网页。大侠都来看看,请务必仔细看问题内容
- 高手请进,100分,请来拿吧!!!
- 《COM技术内幕》读书问题之六: 分发接口是Com接口(符合COM接口的定义吗)?它跟Invoke函数有何关系?
- 蔡问题,100分,在线等候!急!
- directx10 中 D3DX10CreateShaderResourceViewFromMemory 如何加载内存中的图片
- 请问openurl会造成内存泄露吗?
- 深圳,高薪招聘程序员
这是创建与屏幕兼容的DC
创建内存DC后,你必须先为内存DC选入一副位图(CBitmap),否则DC没有底板啊。所以是黑的
//hDC为当前窗口的DC句柄//注意,下面创建DC,传入的参数是NULL
//如果下面的函数,采用hDC传入,是没问题
//==>问题1 : 就是为什么采用NULL传入之后,进行做的画,贴到hDC后,显示出来的居然还是黑色的,相当于空的??????
HDC hdcMem = CreateCompatibleDC(NULL);//由于创建的第四个参数是1,因此只能显示二色图片,导致后面的蓝色刷子无用
//问题2 就是:如果我希望创建这个位图上也能被刷上蓝色,那么创建的语句该如何写??
hbmMem = CreateBitmap(100, 100, 1, 1, NULL);//蓝色刷子
HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 255));
RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = bm.bmWidth;
rect.bottom = bm.bmHeight;
FillRect(hdcMem, &rect, hBrush);BitBlt(hDC,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY);再问,谢谢!
对不起,我刚才给的代码中不全,应该是:
//hDC为当前窗口的DC句柄
//注意,下面创建DC,传入的参数是NULL
//如果下面的函数,采用hDC传入,是没问题
//== >问题1 : 就是为什么采用NULL传入之后,进行做的画,贴到hDC后,显示出来的居然还是黑色的,相当于空的??????
HDC hdcMem = CreateCompatibleDC(NULL);
//由于创建的第四个参数是1,因此只能显示二色图片,导致后面的蓝色刷子无用
//问题2 就是:如果我希望创建这个位图上也能被刷上蓝色,那么创建的语句该如何写??
hbmMem = CreateBitmap(100, 100, 1, 1, NULL);
HBITMAP hOldBmp = SelectObject(hdcMem, hbmMem); //蓝色刷子
HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 255));
RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = bm.bmWidth;
rect.bottom = bm.bmHeight;
FillRect(hdcMem, &rect, hBrush);
BitBlt(hDC,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY); SelectObject(hdcMem, hOldBmp);
.... 再问,谢谢!
[email protected]我给你一个很简单显示的程序!