zoukankan      html  css  js  c++  java
  • VC :在对话框中绘图

    主要代码如下:
    显示代码如下:
    CDC * pDialogDC = GetDC();
    Invalidate();
    UpdateWindow();
    CPen pen(PS_SOLID,2,RGB(255,0,0));
    pDialogDC->SelectObject(&pen);

    for (int i = 0;i < picVector.size(); i++)
    {

    switch(picVector[i]->picFlag)
    {
    case 0:
    pDialogDC->MoveTo(picVector[i]->startPoint);
    pDialogDC->LineTo(picVector[i]->endPoint);
    break;
    case 1:
    pDialogDC->Ellipse(picVector[i]->startPoint.x,picVector[i]->startPoint.y,picVector[i]->endPoint.x,picVector[i]->endPoint.y);
    break;
    case 2:
    pDialogDC->Rectangle(picVector[i]->startPoint.x,picVector[i]->startPoint.y,picVector[i]->endPoint.x,picVector[i]->endPoint.y);
    break;
    }
    }
    ReleaseDC(pDialogDC);
    往vector容器中添加获取的元素(包括所画图的类型,鼠标按下、抬起两点):
    void CForwardBackDlg::OnLButtonUp(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default
    upPoint = point;

    CPicture * pPic = new CPicture();

    pPic->picFlag = style;
    pPic->startPoint = downPoint;
    pPic->endPoint = upPoint;
    picVector.push_back(pPic);
    bakeupVector.push_back(pPic);
    //delete pPic;//检查传递到容器中是否是地址传递,答案: 是
    Invalidate();//只刷新对话框中控件 不刷新对话框自身
    //UpdateWindow();
    CDialog::OnLButtonUp(nFlags, point);
    }
    撤销代码如下:
    if(picVector.size() > 0)
    {
    //delete picVector[picVector.size() - 1];
    picVector.pop_back();

    参考:

    void CForwardBackDlg::OnPaint()

         CDC * pControlDC = GetDC();
         Invalidate();
         UpdateWindow();
         pControlDC->SelectStockObject(BLACK_BRUSH);
         pControlDC->Rectangle(0,0,100,100);
         ReleaseDC(pControlDC);

    }

  • 相关阅读:
    MongoDB 创建数据库
    MongoDB
    MongoDB 概念解析
    window平台安装 MongoDB(二)
    MongoDB入门学习(1)
    解决DevExpress10.2.4版本在VS2012工具箱控件不显示的问题
    Aspose.Word 输出表格后空格字符丢失的解决方法
    ArcEngine 创建空间参考设置默认域
    SPATIALITE 各版本数据库差异
    WGS84投影的WKID说明
  • 原文地址:https://www.cnblogs.com/shenchao/p/2711455.html
Copyright © 2011-2022 走看看