2016 - 2025

感恩一路有你

mfc绘制动态矩形背景变成了白色 MFC动态绘制直线,圆弧段(连续)如何实现?

浏览量:1546 时间:2023-04-28 15:28:34 作者:采采

MFC动态绘制直线,圆弧段(连续)如何实现?

直线使用的函数是BOOL LineTo( HDChdc,intX,intY,);参数: hdc:设备场景句柄X:线段端点X坐标位置,用逻辑坐标表示。这一点实际上不会画出来;它不属于线段的一部分。Y:线段终点的Y坐标位置由逻辑坐标表示。这一点实际上不会画出来;它不 t属于线段的一部分。返回值:返回TRU

MFC画线与画点函数?

动态绘制直线、矩形和椭圆的本质在于消隐问题的解决和对Windows消息循环机制的理解。消隐问题:因为MFC中有一个函数SetROP2,所以这个函数的参数设置为R2-not(当前像素值设置为屏幕像素值的反色,单词 "屏幕 "这里指的是你画的图形所占的那部分屏幕区域,也就是直线所占的屏幕区域就是直线所在的区域。

Windows的消息循环机制在MouseMove消息响应中得到更好的体现,因为它体现在鼠标在绘图区域的移动来实现动态画线和矩形的绘制。当鼠标在绘图区域内移动时,会产生动态效果,也就是说鼠标在移动过程中一直在画直线和矩形,这就需要在MouseMove消息响应中调用画线和画矩形的对应函数。但是,正是因为在鼠标移动的过程中绘制了大量的直线和矩形,我们才不得不在鼠标移动的过程中将之前绘制的直线和矩形清空,这样才能保证实现我们的功能——动态绘制直线和矩形,而不会产生多余的直线和矩形。

消隐和动态绘制问题的关键在于MouseMove消息响应中函数调用的顺序:

1.第一,最后一张图是隐藏的。

画一幅临时的画

3.消息循环的机制:循环执行上面的代码(这是Windows循环的机制,不需要自己的代码实现)。

在最后的LButtonUp消息响应中,需要将上面MouseMove消息响应中最后一个循环中绘制的最后一个临时图形留空。Drop,然后根据LButtonUp消息响应中的point参数绘制最终图形。综上所述,MouseMove中的代码和LButtonUp中隐藏临时图形的代码要实现的功能是动态过程,图形的最终绘制仍然是响应LButtonUp消息及其点参数。

消息 直线 函数 MouseMove 动态

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。