CreateCompatibleDC没有指定大小的参数
比如我想创建一个200×200像素大小的DC,该如何实现?

解决方案 »

  1.   

    如果可以指定大小那不叫兼容DC了。使用CreateDC进行创建并设置相应属性即可。
      

  2.   


    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);
    我想调整位图的大小就可以了吧
      

  3.   

    hDC=GetDC(hwnd);
    hMemDC=CreateCompatibleDC(hDC);
    hMemBMP=CreateCompatibleBitmap(hDC,200,200);
    SelectObject(hMemDC,hMemBMP);
    就是这样。
      

  4.   

    GetDC(0)
    应该就是得到屏幕的DC
    然后在CreateCompatibalDC()把
      

  5.   

    两个思路:
    第一个思路就是2楼说的样子,建立兼容位图,固定位图的大小就行了;
    第二个设定有效区域使用SelectClipRgn,你内存DC选进的位图可以很大,但是内存DC的有效区域可以设定为一个矩形CRgn clipRgn;
    clipRgn.CreateRectRgnIndirect(&rt);  //rt可以自己自由定义,起点不一定要为(0,0)
    MemDC->SelectClipRgn(&clipRgn);   //
      

  6.   

    CreateCompatibleBitmap指定大小,将其SelectObject到兼容DC。
      

  7.   

    没有兼容大小的DC,只有兼容大小的位图Bitmap2楼已经写的很清楚了
      

  8.   

    DC根本就没有大小的概念,大小说的是DC中所选的位图