dc类似于画板,而bitmap类似于画布,要画东西两个东西是基础,除非该dc是设备dc
一:dc的使用
1.初始化dc
初始化画板:HDC memDc=CreateCompatibleDC(HDC dc);//dc可以用NULL
初始化位图:HBITMAP memBitmap=CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitCount, CONST VOID *lpBits);nWidth 表示位图宽度,nHeight 表示高度,nPlanes表示使用的颜色位面数目使用1即可,nBitCount表示单个像素位数使用32,LpvBits:指向颜色数据数组指针。如果该参数为NULL,将不对新生成的位图进行初始化。
选择画布:HGDIOBJECT oldObject=SelectObject(memDc,memBitmap);//此时才可以对memDc进行绘画操作,绘画的效果都是显像在位图上。
2.释放dc
要设置旧的HGDIOBJECT设置回dc :SelectObject(memDc,oldObject);
再删除dc: DeleteDc(memDc);
3.dc绘图
a:画点:SetPixel(HDC dc,int x,int y,COLORREF crColor);//crcolor可以使用RGB(r,g,b);来设置具体颜色
b:画线:LineTo(HDC dc,int x,int y);
c:画矩阵:Rectangle(HDC dc,int x1,int y1,int x2,int y2);
d:dc之间的拷贝:BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);
hdcDest:目标dc
nXDest:拷贝到目标dc某个区域的左上角x坐标
nYDest:拷贝到目标dc某个区域的左上角y坐标
nWidth:拷贝到目标dc某个区域宽度
nHeight:拷贝到目标dc某个区域高度
hdcSrc:源dc
nXSrc:指定从原dc的某个左上角的x坐标为起点开始拷贝
nYSrc:指定从原dc的某个左上角的y坐标为起点开始拷贝
dwRop:操作方式,如SRCCOPY表示直接拷贝,其他方式可以根据SRCCOPY定义查看其他方式
e:其他形状:
画椭圆:BOOL Ellipse(iHDC dc,nt x1,int y1,int x2,int y2);
写入文本:BOOL TextOut(HDC dc,int x,int y,const CString& str);