C# GDI 如何动态绘制矩形

2025-03-21 15:04:33
推荐回答(2个)
回答1:

代码不写了,这里说算法: 利用3个事件
鼠标按下事件,鼠标移动事件,鼠标松开事件

鼠标按下的时候,记录当前的鼠标坐标,并设置一个值表示进入绘制矩形状态
鼠标移动的时候,判断是否是绘制矩形的状态,如果是,首先记下鼠标的坐标,然后利用第一个点(鼠标按下的点),绘制一个矩形

当鼠标松开的时候,停止绘制

这样会有个问题,就是每次移动的时候都绘制一个矩形,导致矩形太多了,解决的办法有2个,
1.每次画之前清除背景
2.记录上次的两个坐标,然后用和背景色一样的画笔重新画一个矩形

回答2:

处理鼠标拖动事件。要点:1、记住矩形左上角初始位置 2、鼠标位置变动后,XOR原来的矩形。3、截取鼠标位置做为新矩形的右下角坐标,再新画一个矩形 4、鼠标坐标类型的转换,检查是相对坐标还是屏幕绝对坐标,要注意转换