请教如何创建一个指定大小的,和当前屏幕兼容的DC? CreateCompatibleDC没有指定大小的参数比如我想创建一个200×200像素大小的DC,该如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果可以指定大小那不叫兼容DC了。使用CreateDC进行创建并设置相应属性即可。 HDC hdc=GetDC(hwnd);HDC memdc=CreateCompatibleDC(hdc);RECT rc;BITMAP bmp;HBITMAP holdbmp,hbmp=LoadBitmap(hInstDVBRes,MAKEINTRESOURCE(IDB_CLOCK));//从资源加载位图holdbmp=(HBITMAP)SelectObject(memdc,hbmp);//这里把hbmp的位图选择到兼容DC memdc,之后这个兼容DC就拥有和//hbmp同样大小的绘图区域,注意超出位图返回的GDI输出都是无效的.GetObject(hbmp,sizeof(BITMAP),&bmp);//这里获取位图的大小信息,事实上也是兼容DC绘图输出的范围SetRect(&rc,0,0,bmp.bmWidth,bmp.bmHeight);DrawText(memdc,"Center Line Text" -1,&rc,DT_VCENTER|DT_SINGLELINE|DT_CENTER);//在兼容DC中间位置输出字符串//这样以来我们就相当于把hbmp这个位图加上了文字标注,我们可以把这个增加了文字标注的位图保存起来.一个简单的图像处理基本就OK了.SelectObject(memdc,holdbmp);//复原兼容DC数据.DeleteDC(memdc);我想调整位图的大小就可以了吧 hDC=GetDC(hwnd);hMemDC=CreateCompatibleDC(hDC);hMemBMP=CreateCompatibleBitmap(hDC,200,200);SelectObject(hMemDC,hMemBMP);就是这样。 GetDC(0)应该就是得到屏幕的DC然后在CreateCompatibalDC()把 两个思路:第一个思路就是2楼说的样子,建立兼容位图,固定位图的大小就行了;第二个设定有效区域使用SelectClipRgn,你内存DC选进的位图可以很大,但是内存DC的有效区域可以设定为一个矩形CRgn clipRgn;clipRgn.CreateRectRgnIndirect(&rt); //rt可以自己自由定义,起点不一定要为(0,0)MemDC->SelectClipRgn(&clipRgn); // CreateCompatibleBitmap指定大小,将其SelectObject到兼容DC。 没有兼容大小的DC,只有兼容大小的位图Bitmap2楼已经写的很清楚了 DC根本就没有大小的概念,大小说的是DC中所选的位图 MFC的求助 内核 有没有Sleep相似的函数可用? 我使用WebBrowser控件浏览网页, 偶尔会出现控件区域全白或打开网页但无法点网页内的链接。 ccombobox的item的长度超过了控件的宽度 请问如何将outlook的地址簿导出来啊? 如何让xp下用MSComm编的程序在没有装VC的98下运行? 祝大家新年快乐!散分了! 工具窗口的最小化问题 怎样在windows下隐藏某个逻辑盘,而且要在不用重启的情况下就可以看到隐藏效果! 制作软件安装包,问关于Matlab Component Runtime的打包问题。 显示文件 原始套接字发送TCP数据包失败(显示send OK)
HDC hdc=GetDC(hwnd);
HDC memdc=CreateCompatibleDC(hdc);
RECT rc;
BITMAP bmp;
HBITMAP holdbmp,hbmp=LoadBitmap(hInstDVBRes,MAKEINTRESOURCE(IDB_CLOCK));//从资源加载位图
holdbmp=(HBITMAP)SelectObject(memdc,hbmp);//这里把hbmp的位图选择到兼容DC memdc,之后这个兼容DC就拥有和
//hbmp同样大小的绘图区域,注意超出位图返回的GDI输出都是无效的.
GetObject(hbmp,sizeof(BITMAP),&bmp);//这里获取位图的大小信息,事实上也是兼容DC绘图输出的范围
SetRect(&rc,0,0,bmp.bmWidth,bmp.bmHeight);
DrawText(memdc,"Center Line Text" -1,&rc,DT_VCENTER|DT_SINGLELINE|DT_CENTER);//在兼容DC中间位置输出字符串
//这样以来我们就相当于把hbmp这个位图加上了文字标注,我们可以把这个增加了文字标注的位图保存起来.一个简单的图像处理基本就OK了.
SelectObject(memdc,holdbmp);//复原兼容DC数据.
DeleteDC(memdc);
我想调整位图的大小就可以了吧
hMemDC=CreateCompatibleDC(hDC);
hMemBMP=CreateCompatibleBitmap(hDC,200,200);
SelectObject(hMemDC,hMemBMP);
就是这样。
应该就是得到屏幕的DC
然后在CreateCompatibalDC()把
第一个思路就是2楼说的样子,建立兼容位图,固定位图的大小就行了;
第二个设定有效区域使用SelectClipRgn,你内存DC选进的位图可以很大,但是内存DC的有效区域可以设定为一个矩形CRgn clipRgn;
clipRgn.CreateRectRgnIndirect(&rt); //rt可以自己自由定义,起点不一定要为(0,0)
MemDC->SelectClipRgn(&clipRgn); //