C#GDI+重绘后的图形怎么选中,而且可以实现拖动,改变大小等操作,求高手

如题所述

这要用控件的MouseMove、MouseDown、MouseUp事件配合使用才能实现,具体一个思路是,当鼠标按下的时候,引发MouseDown事件,事件参数包含一个坐标的参数,你用这个参数判断是否在图形范围内,如果是的,设置一个标志位,当拖动鼠标的时候,引发MouseMove事件,事件参数也包含一个坐标的参数,根据这个参数你自己写代码更改图形的各个点的坐标,鼠标释放的时候引发MouseUp事件,这个时候你释放标志位!还有设置控件的DoubleBuffered的属性为true,这样在重绘图形时不会出现闪烁
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-18
只能通过事件的方式。
在绘制图形时确定好该图形的GraphicsPath 然后 GraphicsPath中有一个IsVisible(Point) 的方法。来确定指定坐标是否在图形内部来确定是否需要选择该图形。
拖动,改变大小等。需要你在重绘的时候自己控制绘制的位置。或者你可以用Graphics 的TranslateTransform方法整体偏移绘制,和Graphics 的ScaleTransform 方法来整体的放大缩小追问

能不能具体点,最好把代码告诉我,初学不懂你说的

本回答被网友采纳

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

关于c#里GDI+绘图问题
把窗体最小化-最大化一下 你画的东西就没了 这就是基于GDI绘图的控件刷新原理 所以正确的做法 你触发了click或者mousemove事件 需要改变一些类内部的状态变量 然后调用invalidate重绘控件 而绘图代码应该正确的写在paint里

c#gdi+画图 怎样重绘
首先说一下,WinForm里是没有矩形这种东西的,想要达到移动矩形的目的,只有画一个矩形,就是用GDI+,连续在不同位置画矩形,看起来就是矩形在移动。折中的方案就是放一个矩形控件,模拟矩形,但是这样限制会很大,毕竟GDI画出来的你可以随意对他进行操作。using(Graphics g = panel.CreateGraphics()){...

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

c# GDI+画线问题求助
这个问题,你要算出在哪个位置进行画方块,当mouse移动的时,你要进行判断,mouse point 是不是在你那个方块区域附近,如果靠近的话,那你这时就要进行重绘,将方块显示出来。方块对象要判断是否按住了,如按住就要开始移动。其实 都是Graphic的重绘,在 特定时间进行绘制全部,给人一种移动的感觉 ...

C#下用GDI+画了一组曲线,现在想添加一个按钮,按下就可以把全部图形清空...
private List<Point> samples = new List<Point>(); \/\/样本数组,可从鼠标按下事件中添加样本 \/\/Clear按钮清屏 private void ClearBtn_Click(object sender, EventArgs e){ Invalidate(); \/\/重绘窗口 samples.Clear(); \/\/清除样本 } ...

c# 在PICTUREBOX中画出一个可拖动的透明矩形框,边框有颜色不透明,并且...
等类似的内容,看懂别人的实例就可以改一下自己用了。由于可以在任意控件上绘制,搜索的时候不需要强调PICTUREBOX。大致你需要学会 C# GDI绘制(矩形框绘制,线型,颜色等属性的设置)鼠标事件和位置的捕捉(按下,移动,松开对应了不同的绘制动作)Cursor(光标的变换,比如鼠标在边框上变成箭头拖动状)

用C#.net的GDI+画图,如何实现图像的旋转,比如直线,矩形,椭圆等等,用R...
画“直线,矩形,椭圆”这个是怎么画的???c#.net GDI+里面有相应的函数,那旋转是一样的,你画直线时,需要提供参数,画矩形时也需要提供参数,旋转只不过是参数变量变了而已。求出变量就可以了!

C#中GDI+开发问题
这根本不是GDI+的问题吧,这就是如何组织这些对象的问题吧。GDI+只管绘制,画一个圆画一个方画一条线又没什么难度。为每个绘制图形建立一个对象,其中保存各自的位置,对象都带有Render方法用于绘制自身,然后带一个函数委托用于和鼠标事件绑定,大体如此,自己再完善下吧。

用GDI+(C#语言)画图,图形保存问题
你应该每一次把你的图形存起来,然后在paint里面重绘所有图形.用异或不好,在同个位置画两个一样的图形的话就全都没有了

相似回答