首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么在Winform中实现自己绘制得图进行拖动

2012-01-31 
如何在Winform中实现自己绘制得图进行拖动!怎么实现自己用GDI+绘制得图形进行拖动,并且可以多个图进行重叠

如何在Winform中实现自己绘制得图进行拖动!
怎么实现自己用GDI+绘制得图形进行拖动,并且可以多个图进行重叠显示?谢谢大侠们!

[解决办法]
把画的图放到容器上
比如GroupBox或者PictureBox上
然后拖动容器控件

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

[解决办法]
GDI+我也用过一段时间,有一定的了解,以下是我的个人见解
你想拖动GDI+绘制的图形其实就是把你所绘制的图形位置不断的重载,在鼠标按下的时候记下鼠标的坐标,移动后松开鼠标也有个坐标,通过这两个坐标你就可以得到你所移动的图形的顶点.

关于重叠最好是调整上面图形的透明度,然后把图形画到你要移到的图形上
[解决办法]
要分别处理MouseDown,MouseMove,MouseUp事件。

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

至于重叠,你可以把所有图形的GraphicPath加到一个List里面,按顺序画到屏幕上就可以了
[解决办法]
调用API获得颜色,然后判断坐标,如果是你画的图,就改变绘图参数,重新绘制一遍,你是要做绘图板吧,哪个学校的?
[解决办法]
把画的图放到容器上
比如GroupBox或者PictureBox上
然后拖动容器控件

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

要分别处理MouseDown,MouseMove,MouseUp事件。
[解决办法]
要么用多个PictrueBox,要么像我说的调用一系列WIN API来实现
[解决办法]
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)
{
}
[解决办法]
楼上的。。。
你的代码解决不了他的问题。。。
[解决办法]
code project 上有源代码。我现在也在研究这个问题。
[解决办法]
我做的图型控件以后也要实现这个功能,先帮你顶
[解决办法]
我QQ 378138668 加我先,以后一起研究啊
[解决办法]
你要记录下所有的操作,每次的操作都是一个对象,每个对象都有一个移动的方法.
每个对象在不同的层上

热点排行