HBITMAP MakeBmp()
{
HDC hWndDC = NULL;
HDC hMemDC = NULL;
HBITMAP hMemBmp = NULL;
HBITMAP hOldBmp = NULL;
RECT rect;
int w = 0, h = 0;
HWND hWnd; hWnd = ::GetDesktopWindow();
hWndDC = ::GetWindowDC(hWnd);
hMemDC = ::CreateCompatibleDC(hWndDC); w = 200; //随便设的
h = 200; hMemBmp = ::CreateCompatibleBitmap(hWndDC, w, h); hOldBmp = (HBITMAP)::SelectObject(hMemDC, hMemBmp);
::SetBkMode(hMemDC, TRANSPARENT); ::TextOut(hMemDC, 0, 0, "sdfsdfsdfgsdgsdg",30); LOGBRUSH lgBrush;
lgBrush.lbColor = RGB(100,100,100);
HBRUSH hBrush = ::CreateBrushIndirect(&lgBrush); ::SetRect(&rc, 10, 10, 100, 100);
FillRect(hMemDC, &rc, hBrush); hMemBmp = (HBITMAP)::SelectObject(hMemDC, hOldBmp); ::DeleteObject(hOldBmp);
::ReleaseDC(NULL, hMemDC);
::ReleaseDC(NULL, hWndDC);
return hMemBmp;
}返回后,我用BitBlt复制到我的视图DC,发现图形只有黑白。
我想在内存中作一幅彩图,再复制到视图DC, 并且是透明的, 比如说我在内存位图上画一个红色矩形,复制到视图DC后只显示刚才画的矩形,而其它地方是透明的
不遮盖底图,应该怎么做呢?
{
HDC hWndDC = NULL;
HDC hMemDC = NULL;
HBITMAP hMemBmp = NULL;
HBITMAP hOldBmp = NULL;
RECT rect;
int w = 0, h = 0;
HWND hWnd; hWnd = ::GetDesktopWindow();
hWndDC = ::GetWindowDC(hWnd);
hMemDC = ::CreateCompatibleDC(hWndDC); w = 200; //随便设的
h = 200; hMemBmp = ::CreateCompatibleBitmap(hWndDC, w, h); hOldBmp = (HBITMAP)::SelectObject(hMemDC, hMemBmp);
::SetBkMode(hMemDC, TRANSPARENT); ::TextOut(hMemDC, 0, 0, "sdfsdfsdfgsdgsdg",30); LOGBRUSH lgBrush;
lgBrush.lbColor = RGB(100,100,100);
HBRUSH hBrush = ::CreateBrushIndirect(&lgBrush); ::SetRect(&rc, 10, 10, 100, 100);
FillRect(hMemDC, &rc, hBrush); hMemBmp = (HBITMAP)::SelectObject(hMemDC, hOldBmp); ::DeleteObject(hOldBmp);
::ReleaseDC(NULL, hMemDC);
::ReleaseDC(NULL, hWndDC);
return hMemBmp;
}返回后,我用BitBlt复制到我的视图DC,发现图形只有黑白。
我想在内存中作一幅彩图,再复制到视图DC, 并且是透明的, 比如说我在内存位图上画一个红色矩形,复制到视图DC后只显示刚才画的矩形,而其它地方是透明的
不遮盖底图,应该怎么做呢?
解决方案 »
- ffmpeg 写播放器,取AVI文件帧率
- 关于字节对齐的问题
- 程序编译时遇到的一个问题
- 请推荐一种最佳的数据库连接方式(分不够可再加)
- 对于命名管道支持多客户机连接,是不是每个客户端,对应一个命名管道实例.就是服务器在一个时间只能与一个客户端相连.
- 有谁知道如何做有记忆功能的文本框控件啊?
- 打印出<深入浅出mfc><vc++技术内幕IV>太厚了6cm!!不知如何装订???
- 一个头疼的问题!1
- 那位师哥了解深圳天源迪科公司,能给小弟介绍一下吗?
- 菜鸟问题:怎么建立一个模态对话框,并且点击模态对话框“确定”按钮的时候怎么关闭?
- 请问,VS.net(英文版)的能不能装在win2000 中文版上?
- typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD); 这句话作何解释?高手请详细点!
hMemBmp = ::CreateCompatibleBitmap(hMemDC, w, h);