jujiawu1024 2016-03-28 07:41 采纳率: 100%
浏览 1911
已采纳

MFC对于static控件在界面上的绘图操作,绘图的擦除操作

在MFC中画波纹图,需要先事先擦除旧的数据,具体的函数调用是什么?

  • 写回答

3条回答

  • threenewbee 2016-04-05 19:42
    关注
     在Static控件上画图的方法.. 
        声明两个变量在view或Dialog的头文件中. 
        CWnd* pWnd; //表示控件窗口的变量 
        CDC* pControlDC; //表示控件窗口的设备描述表.DC 
        在OnInitialUpdate()函数中进行赋值(View) 
        pWnd=GetDlgItem(IDC_STATICRCT); 
        pControlDC=pWnd->GetDC(); 
        重载OnPaint()函数. 
        在函数中 
    
        void CMy****View::OnPaint() 
        {
        CPaintDC dc(this); // device context for painting
    
        // TODO: Add your message handler code here
        pWnd=GetDlgItem(IDC_PAINT_STATIC); 
        pControlDC=pWnd->GetDC(); 
    
        pWnd->Invalidate(); 
        pWnd->UpdateWindow(); 
    
        CRect rct; 
        pWnd->GetClientRect(rct); 
    
        CPen RectPen(PS_DASH,1,0x0000FF);
        pControlDC->SelectObject(&RectPen); 
    
        //-----------------------------------------------
        //-- Draw
        //-----------------------------------------------
        pControlDC->Rectangle(rct.left+10,rct.top+10,rct.right-10,rct.bottom-10); 
    
        pControlDC->MoveTo(0,0);
        pControlDC->LineTo(0,100);
        pControlDC->LineTo(100,100);
        pControlDC->LineTo(100,0);
        pControlDC->LineTo(0,0);
    
        RectPen.DeleteObject();
        pWnd->ReleaseDC(pControlDC); 
        }
    
        这里有一个技巧应该注意,即在控件窗口内绘图的同时,还要防止Windows对它重复绘制.依次调用Invalidate/UpdateWindow,便可以完成这项工作. 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配