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

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

一般而言我们去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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值