在C#里面怎么在一幅位图上接着画一个矩形,我想做一个那种鼠标按下,拖拽,松开

在C#里面怎么在一幅位图上接着画一个矩形,我想做一个那种鼠标按下,拖拽,松开会在原图形之上显示矩形的效果,移动的时候矩形也是不断改变的,... 在C#里面怎么在一幅位图上接着画一个矩形,我想做一个那种鼠标按下,拖拽,松开会在原图形之上显示矩形的效果,移动的时候矩形也是不断改变的, 展开
 我来答
200911011251
2013-03-27 · TA获得超过103个赞
知道答主
回答量:32
采纳率:0%
帮助的人:21万
展开全部
思路 创建一个矩形类,保存你需要画的矩形的属性,例如:
public class MyRectangle

{
private int _top;
private int _left;
private int _height;
private int _width;
private int _penColor;

punlic void OnDraw(Graphics g)
{
g.drawRectangle(_penColor,_left,_top,_width,_height);

}

#region 属性

//...... 对成员字段进行封装

#endregion
}

窗体的成员:
private bool _isKeyDown; // 鼠标是否按下
private int _downX; // 鼠标按下时的X坐标

private int _downY; // 鼠标按下时的Y坐标

事件:
MouseDown事件
判断鼠标按下的位置是否在MyRectangle内,如果是
{
设置 _isKeyDown为true;
_downX,_downY为按下时的位置;

}
否则不做任何操作

MouseMove事件

通过加减法计算出鼠标当前位置和鼠标按下时位置的差来改变MyRectangle 的Top 和Left
通知窗体刷新界面(调用需要刷新的空间的Invalidate()方法)

MouseUp事件
设置 _isKeyDown为false;
追问
这样的话,在MouseUp的时候,所画的矩形就没有啦,怎么让它保持啊
追答
还在的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式