• 利用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 }

     效果如下:

  • 相关阅读:
    [bzoj1089] 严格n元树
    [bzoj1097] 旅游景点atr
    [hdu3887] Counting Offspring
    [POJ3321] Apple Tree
    [POJ3635] Full Tank?
    git
    【MySQL】数据的导出导入
    Ubuntu python 开发环境配置
    测试markdown
    约瑟夫环问题-java实现
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/5295995.html
Copyright © 2020-2023  润新知