zoukankan      html  css  js  c++  java
  • MFC三种不同方式实现图形的保存和重绘---方法一:通过集合类CPtrArray保存点的坐标


     //方法一:通过集合类CPtrArray保存点的坐标


    响应WM_LBUTTONUP消息 在OnButtonUp()函数的代码

    CClientDC dc(this);

     //获得透明画刷并选中

    CBrush* brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    dc.SelectObject(brush);

    //根据不同类型绘制点、直线、矩形、椭圆
    switch(m_gType)
    {
    case 1:
    dc.SetPixel(point,RGB(255,0,0));
    break;
    case 2:
    dc.MoveTo(m_pOrigin);     //m_pOrigin为起始点坐标
    dc.LineTo(point);
    break;
    case 3:
    dc.Rectangle(CRect(m_pOrigin,point));
    break;
    case 4:
    dc.Ellipse(CRect(m_pOrigin,point));
    break;
    }
    //为了处理滚动条窗口在重绘时最下端的图形会出现偏移的情况
    OnPrepareDC(&dc); //调整显示上下文的属性  
    //将设备点转换成逻辑点
    dc.DPtoLP(&m_pOrigin);
    dc.DPtoLP(&point);

    //保存数据 到CGraphic类中
    CGraphic* graph=new CGraphic(m_gType,m_pOrigin,point); //CGraphic 是一个自定义的类 有三个成员变量 分别表示 图形类型、起点、终点

    m_ptrArray.Add(graph); //将CGraphic对象添加到CPtrArray集合类对象中保存起来



    响应WM_PAINT消息  在OnDraw()函数的代码


    //创建透明画刷并且选中
    CBrush* brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    pDC->SelectObject(brush);

    //通过循环将集合类对象中保存的点坐标取出
    for(int i=0;i<m_ptrArray.GetSize();i++)
    {
    switch(((CGraphic*)m_ptrArray.GetAt(i))->m_gType)
    {
    case 1:
    pDC->SetPixel(((CGraphic*)m_ptrArray.GetAt(i))->m_pEnd,RGB(255,0,0));
    break;
    case 2:
    pDC->MoveTo(((CGraphic*)m_ptrArray.GetAt(i))->m_pOrigin );
    pDC->LineTo(((CGraphic*)m_ptrArray.GetAt(i))->m_pEnd);
    break;
    case 3:
    pDC->Rectangle(CRect(((CGraphic*)m_ptrArray.GetAt(i))->m_pOrigin,((CGraphic*)m_ptrArray.GetAt(i))->m_pEnd));
    break;
    case 4:
    pDC->Ellipse(CRect(((CGraphic*)m_ptrArray.GetAt(i))->m_pOrigin,((CGraphic*)m_ptrArray.GetAt(i))->m_pEnd));
    break;
    }
    }
    */

     

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Unzip 解压报错
    Linux ftp安装
    关于vsftp出现Restarting vsftpd (via systemctl): Job for vsftpd.service failed because the control 的解决办法
    ASP.NET开发知识总结
    移动端开发调试方法总结
    移动H5优化指南
    基于windows下,node.js之npm
    微服务理解
    SQL Server 触发器
    jQuery验证控件jquery.validate.js使用说明+中文API
  • 原文地址:https://www.cnblogs.com/lovelyx/p/4867159.html
Copyright © 2011-2022 走看看