zoukankan      html  css  js  c++  java
  • 利用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 }

     效果如下:

  • 相关阅读:
    kafka 的基本概念及使用场景
    使用RedisTemplate执行Redis脚本
    SpringBoot使用Lua脚本操作Redis
    Java不定参数Object… obj 和 Object[] 的区别
    IntelliJ IDEA添加快捷键自动输入@author信息
    使用Guava RateLimiter限流以及源码解析
    go fileserver
    记录了prometheus 告警指标
    https://mp.weixin.qq.com/s/ZBsZHQtAz_vKS8fwvHKB3g图文分析Kubernetes认证、授权和准入控制
    es不停机滚动update
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/5295995.html
Copyright © 2011-2022 走看看