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);

    }

  • 相关阅读:
    关于Maven项目的pom.xml中的依赖或插件失效的解决方法
    java引用数据类型在方法中的值传递
    java匹配http或https的url的正则表达式20180912
    java正则表达式的进阶使用20180912
    java线程池 多线程 搜索包含关键字的文件路径
    魔术球问题
    [SDOI2009]晨跑
    [洛谷P2045]方格取数加强版
    最小路径覆盖问题
    最长不下降子序列问题
  • 原文地址:https://www.cnblogs.com/shenchao/p/2711455.html
Copyright © 2011-2022 走看看