关于在MFC中实用在基于对话框窗口上面绘制折线的实现方法

来源:互联网 发布:人过五十知天命感慨 编辑:程序博客网 时间:2024/04/25 20:21

刚开始的时候一直无法达到想要的效果,后来不断的实验发现是由于坐标的切换不正确导致的,下面详细说明

一般而言我们去GetWindowRect(&rt), 获取到的是相对于显示屏的窗口坐标,但是在moveto和liveto 这两个函数是针对device来绘制的,在获取HDC的时候,this->getDC(),得到是当前的对话框的关联DC,所以需要把之前获取的坐标转换到我们的dialog上,也就一时要实用Screentoclient(pt);


GetDlgItem(IDC_STATIC_UP)->GetWindowRect(&r4);POINT pt1,pt2;pt1.x = r4.left + 20;pt1.y = r4.bottom - 20;pt2.x = r4.left + 20;pt2.y = r4.top + 20;ScreenToClient(&pt1);ScreenToClient(&pt2);CPen pen(PS_SOLID,3,RGB(0,255,255)); CPen* pOldPen; CDC *dc = GetDC();pOldPen=dc->SelectObject (&pen); dc->MoveTo(pt1); dc->LineTo(pt2); dc->SelectObject (&pOldPen);


0 0
原创粉丝点击