C# GDI 如何动态绘制矩形
类似于QQ截图!我只能画出静态的!就是点一下出现一个矩形!现在我像实现动态效果的!就是当鼠标按下去只要不松矩形就可以动态拉大!...
类似于QQ截图!我只能画出静态的!就是点一下出现一个矩形!现在我像实现动态效果的!就是当鼠标按下去只要不松矩形就可以动态拉大!
展开
2个回答
2013-11-25
展开全部
代码不写了,这里说算法: 利用3个事件
鼠标按下事件,鼠标移动事件,鼠标松开事件
鼠标按下的时候,记录当前的鼠标坐标,并设置一个值表示进入绘制矩形状态
鼠标移动的时候,判断是否是绘制矩形的状态,如果是,首先记下鼠标的坐标,然后利用第一个点(鼠标按下的点),绘制一个矩形
当鼠标松开的时候,停止绘制
这样会有个问题,就是每次移动的时候都绘制一个矩形,导致矩形太多了,解决的办法有2个,
1.每次画之前清除背景
2.记录上次的两个坐标,然后用和背景色一样的画笔重新画一个矩形
鼠标按下事件,鼠标移动事件,鼠标松开事件
鼠标按下的时候,记录当前的鼠标坐标,并设置一个值表示进入绘制矩形状态
鼠标移动的时候,判断是否是绘制矩形的状态,如果是,首先记下鼠标的坐标,然后利用第一个点(鼠标按下的点),绘制一个矩形
当鼠标松开的时候,停止绘制
这样会有个问题,就是每次移动的时候都绘制一个矩形,导致矩形太多了,解决的办法有2个,
1.每次画之前清除背景
2.记录上次的两个坐标,然后用和背景色一样的画笔重新画一个矩形
2013-11-25
展开全部
处理鼠标拖动事件。要点:1、记住矩形左上角初始位置 2、鼠标位置变动后,XOR原来的矩形。3、截取鼠标位置做为新矩形的右下角坐标,再新画一个矩形 4、鼠标坐标类型的转换,检查是相对坐标还是屏幕绝对坐标,要注意转换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询