利用Microsoft VC++6.0 的MFC 的绘图工具实现简单图形的绘制
MFC运算功能强大,拥有完备的绘图功能。
在Windows平台上,应用程序的图形设备接口(graphics device interface,GDI)被抽象为设备上下文(Device Context,DC)。
在微软基类库MFC中,CDC类是定义设备上下文对象的基类,所有绘图函数都在CDC基类中定义。当需要输出文字或图形时,就需要调用CDC类的成员函数,这些成员函数具备输出文本、绘制图形的功能。
本文讲解的例程全部在TestView.cpp文件的void CTestView::OnDraw(CDC* pDC)函数中实现。
1.在屏幕的P0(20,20)坐标位置处绘制一个蓝色像素点,然后读出该像素点的颜色,水平平移100个像素绘制P1点;画一个矩形。
代码如下:
1 void CMy00View::OnDraw(CDC* pDC) 2 { 3 CMy00Doc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 // TODO: add draw code for native data here 6 7 COLORREF clr; 8 int x=20,y=20; 9 pDC->SetPixelV(x,y,RGB(255,0,0)); 10 clr=pDC->GetPixel(x,y); 11 pDC->SetPixelV(x+100,y,clr);//像素点 12 pDC->Rectangle(100,200,200,300);//矩形 13 }
效果如下:
2.从起点P0(20,30)到终点P1(200,300)画一条1像素宽的蓝色直线
代码如下:
1 void CMy00View::OnDraw(CDC* pDC) 2 { 3 CMy00Doc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 // TODO: add draw code for native data here 6 //从起点P0(20,30)到终点P1(200,300)画一条1像素宽的蓝色直线, 7 CPen NewPen,*p01dPen; 8 NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255)); 9 p01dPen=pDC->SelectObject(&NewPen); 10 pDC->MoveTo(20,30); 11 pDC->LineTo(200,300); 12 pDC->SelectObject(p01dPen); 13 NewPen.DeleteObject(); 14 }
效果如下:
![](https://images2015.cnblogs.com/blog/818082/201603/818082-20160319190256162-499257514.png)
3.绘制左上角点为P0(100,100),右下角点为P1(600,300)的矩形。矩形边界线为1像素宽的蓝线,矩形内部填充为绿色
代码如下:
1 void CMy00View::OnDraw(CDC* pDC) 2 { 3 CMy00Doc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 // TODO: add draw code for native data here 6 CPen NewPen,*p01dPen; 7 NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255)); 8 p01dPen=pDC->SelectObject(&NewPen); 9 CBrush NewBrush,*p01dBrush; 10 NewBrush.CreateSolidBrush(RGB(0,255,0)); 11 p01dBrush=pDC->SelectObject(&NewBrush); 12 pDC->Rectangle(100,100,600,300); 13 pDC->SelectObject(p01dBrush); 14 NewBrush.DeleteObject(); 15 }
效果如下:
posted on 2016-03-19 19:04 CuriousZero 阅读(19772) 评论(0) 编辑 收藏 举报