MFC 鼠标画线总结

    使用mfc鼠标画线,主要使用鼠标左键单击,鼠标移动,鼠标右键单击等响应函数完成。

     在mfc画线是主要要注意以下几点:

        1、坐标系问题:在鼠标左键单击的响应函数中获取的鼠标坐标为设备坐标(屏幕坐标),而画线使MOVETO,LINETO函数使用的是逻辑坐标(客户区坐标),因此在获取鼠标单击坐标时需要进行坐标系的转换。

               同时,如果是在对话框的某个控件上画线,还需要获取控件和对话框窗口的相对坐标。

              坐标转换相关知识参见:http://blog.csdn.net/foreverhuylee/article/details/23998821;http://shitou7630.blog.163.com/blog/static/3269953620146201628498/;

         2、鼠标移动时画线的擦除问题:

                2-1、在鼠标移动响应函数中使用反色绘图模式ddd.SetROP2(R2_NOT);擦除上一条临时线。

                2-2、在鼠标移动结束后,最终画线是需要擦除鼠标移动时最后一次绘制的临时线,否则有可能出现绘制两条直线的结果。

                    具体做法为:在左键弹起响应函数(或者左键第二次单击判断函数)中,先使用ddd.SetROP2(R2_NOT)擦除最后一条临时线,再使用ddd.SetROP2(R2_COPYEN)绘制要求的固定直线。参考资料:http://zhidao.baidu.com/link?url=uVKRfPSGeazHqhg4UCDGc8UAnmftL28EXpUIY5zAE-4yptYI52-i5jja6gf-sjV-g8aqzNWvdx55zJqvy-53Iq;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值