如何在Winform中实现自己绘制得图进行拖动!

子夜1978 2007-08-15 11:18:11
怎么实现自己用GDI+绘制得图形进行拖动,并且可以多个图进行重叠显示?谢谢大侠们!
...全文
309 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
brucenan999 2007-08-17
  • 打赏
  • 举报
回复
你要记录下所有的操作,每次的操作都是一个对象,每个对象都有一个移动的方法.
每个对象在不同的层上
wjjSoft 2007-08-17
  • 打赏
  • 举报
回复
我QQ 378138668 加我先,以后一起研究啊
wjjSoft 2007-08-17
  • 打赏
  • 举报
回复
我做的图型控件以后也要实现这个功能,先帮你顶
wjjSoft 2007-08-17
  • 打赏
  • 举报
回复
code project 上有源代码。我现在也在研究这个问题。
yaoshuwen 2007-08-17
  • 打赏
  • 举报
回复
楼上的。。。
你的代码解决不了他的问题。。。
kingonehappy 2007-08-17
  • 打赏
  • 举报
回复
private void Login_MouseDown(object sender, MouseEventArgs e)
//记录鼠标点击的初始位置
{
if (e.Button == MouseButtons.Left)
{
//pSrc = new Point();
//pSrc.X = e.X;
//pSrc.Y = e.Y;
sx = e.X;
sy = e.Y;
}
}

private void Login_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point pDest = PointToScreen(new Point(e.X, e.Y));
this.Location = new Point(pDest.X - sx, pDest.Y - sy);//pSrc.X, pDest.Y - pSrc.X);
}
}

protected int sx, sy;

private void Login_MouseUp(object sender, MouseEventArgs e)
{
}
yaoshuwen 2007-08-17
  • 打赏
  • 举报
回复
要么用多个PictrueBox,要么像我说的调用一系列WIN API来实现
huzhangyou 2007-08-17
  • 打赏
  • 举报
回复
把画的图放到容器上
比如GroupBox或者PictureBox上
然后拖动容器控件

重叠显示,就是重新画一张图

要分别处理MouseDown,MouseMove,MouseUp事件。
子夜1978 2007-08-17
  • 打赏
  • 举报
回复
俺不是学校的,俺是想做一个可以自己调整的维恩图!
yaoshuwen 2007-08-17
  • 打赏
  • 举报
回复
调用API获得颜色,然后判断坐标,如果是你画的图,就改变绘图参数,重新绘制一遍,你是要做绘图板吧,哪个学校的?
子夜1978 2007-08-17
  • 打赏
  • 举报
回复
放在picturebox这些容器来,我改变不了背景让他透明,所以当重叠以后,就会覆盖掉下面的图形!!处理窗体的鼠标事件的比较有可行性,现在正在解决多个图形如何选择然后拖动的问题。有知道的大哥帮帮忙!这个问题解决掉就马上给分了!
uyki 2007-08-15
  • 打赏
  • 举报
回复
GDI+我也用过一段时间,有一定的了解,以下是我的个人见解
你想拖动GDI+绘制的图形其实就是把你所绘制的图形位置不断的重载,在鼠标按下的时候记下鼠标的坐标,移动后松开鼠标也有个坐标,通过这两个坐标你就可以得到你所移动的图形的顶点.

关于重叠最好是调整上面图形的透明度,然后把图形画到你要移到的图形上
lovefootball 2007-08-15
  • 打赏
  • 举报
回复
把画的图放到容器上
比如GroupBox或者PictureBox上
然后拖动容器控件

重叠显示,就是重新画一张图
sx_rubbish 2007-08-15
  • 打赏
  • 举报
回复
要分别处理MouseDown,MouseMove,MouseUp事件。

在MouseDown的时候判断鼠标位置是否在图形区域内,MouseMove的时候不断刷新重绘,根据鼠标及时坐标重画新图形,擦除之前图形。MouseUp和MouseMove类似。

至于重叠,你可以把所有图形的GraphicPath加到一个List里面,按顺序画到屏幕上就可以了

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧