利用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 }
效果如下:
 
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  阅读(19562)  评论(0编辑  收藏  举报

导航