C#怎么移动已经绘制的图形

在C#里如何移动已经绘制的图形?
比如说在button1的callback下

Graphics graphics = pictureBox1.CreateGraphics();
Rectangle rect = new Rectangle(0, 0, 100, 50);
graphics.DrawRectangle(Pens.Red, rect);

在另一个button2的callback下,想移动这个矩形,该怎么处理?
只能采取设置
rect.Offset(ii, ii);
pictureBox1.Refresh();
graphics.DrawRectangle(pen, rect);
这种重绘的方法么?
如果我pictureBox1上面画了多个图形,重绘,那岂不是得每个图形都重画?
可否对每个图形进行单独改变?
每个图形绘制完后,C#保存每个图形的句柄吗?

如果你要选取图形进行移动所放处理,那应该要按照矢量图来存放信息,这个和位图不同。
需要设计一个数据结构存放图形的坐标,长度等信息。
一般常用的做法是定一个各种图形基类,不同的形状定以成派生类,绘制通过类成员函数进行。
那么你的整个矢量图就是一个该类对象的集合,对于如何选取其实就是对于这个集合的遍历,如果你向移动其中一个成员,那么要重新绘制这个集合。
你说的图形的句柄,是否是指位图的那个,我觉得不需要,你如果要用位图,那么就无法实现你说的功能。
温馨提示:内容为网友见解,仅供参考
无其他回答

用C#画图,怎么移动所画的图形,请教高手指点!!
更改你所画好的图所在的位置即可,将已画图形放在一个panel或picturebox上,需要移动时重新初始化控件的location属性就好了。下面代码是你panel位置随着你的光标位置移动而移动 Dim pi As Point = New Point(MousePosition.X, MousePosition.Y)panel.location = pi;...

c#用Graphics画完的图如何擦去?
办法貌似很多,比如重绘所有其他元素,或者多个透明控件叠加,或者暂存每个画面的截图以供撤销。第一种操作起来最简单,比如上面画线,颜色、两个坐标是参数,作为一个整体存入某list,每次全部重绘每个形状,需要移除哪个就在list里面移除它,然后重绘。

C# picturebox 中怎么对所绘制图形中的各图元选中,移动呢?
首先你在PictureBox的move事件里判断鼠标点是否在你那个图元的区域内。用个标志位标识。然后如果在图元的区域内,鼠标Down的时候和Move的时候开始修改图元的绘制的Location。这样就做到了移动图元的效果.

C#GDI+重绘后的图形怎么选中,而且可以实现拖动,改变大小等操作,求高手...
这要用控件的MouseMove、MouseDown、MouseUp事件配合使用才能实现,具体一个思路是,当鼠标按下的时候,引发MouseDown事件,事件参数包含一个坐标的参数,你用这个参数判断是否在图形范围内,如果是的,设置一个标志位,当拖动鼠标的时候,引发MouseMove事件,事件参数也包含一个坐标的参数,根据这个参数你自己写...

C# 如何将画的图形在屏幕上随机运动
第一步提供随机方法,直线随机,曲线随机折线随机等等,方法中的参数都随机 第二步,根据随机方法的个数定义随机区间确定用那种随机方法。基本上就随机了。

C# 怎么能控制已经画在画布上的图形?
无法控制。话好的线、圆就是一堆像素而没有任何特殊意义了。你在画之前必须保存一切要画的信息,例如圆记录下圆心和半径,线段记录下起点和中点,然后在代码中进行一些解析几何方面的工作。鼠标对图形是否击中,图形是否被选择等的内部实现都要自己完成。

c#在picturebox控件里,绘制如图的图形并跟着鼠标移动?(在线坐等大神...
这个。。我有个很简单但是很粗略的实现,就是通过实现picturebox的mousemove事件,然后没移动一下 就画一次,最后擦除掉。。。public int newX; public int newY; private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { newX = e.X; newY = e.Y; Graphics g...

用C#语言怎样使一个图形随鼠标拖拽到到另一个地方
可以做的。如果是个图片控件。你可以在MouseDown事件里写个标志,表示选中了 然后在MouseMove事件里,根据鼠标坐标,设置控件的坐标(当然要判断鼠标是按着的)。在MouseUP事件里把那个标志去掉。完成

C#怎么消除用Graphics画好的矩形
有2种解决方案:1、使用背景色填充矩形(相当于局部处理);2、如果画布中没有别的图形,直接用画布的清空函数,即重新加载背景。

WPF\/C#:让绘制的图形可以被选中并将信息显示在ListBox中
在绘制矩形后,加入代码以显示单元格的行列信息。添加鼠标事件处理程序,实现选中与取消选中功能,并通过改变边框颜色表示。使用字典管理每个单元格与信息的对应关系。设计两个类,表示选中单元格与多个单元格,利用ObservableCollection实现动态数据管理。设置DataContext属性,定义单元格选择逻辑与显示逻辑。配置数据...

相似回答