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

    }

  • 相关阅读:
    (七)mysql 记录长度
    (六)列类型
    (五)校对集
    (四)中文数据问题
    Spring Boot Jpa 的使用
    Spring Boot:如何优雅的使用 Mybatis
    Spring Boot:定时任务
    Spring Boot 小技巧
    【重磅】Spring Boot 2.0权威发布
    Spring Boot + Jpa + Thymeleaf 增删改查示例
  • 原文地址:https://www.cnblogs.com/shenchao/p/2711455.html
Copyright © 2011-2022 走看看