如何处理图片重叠时的鼠标事件
在重写的panel中根据数据库的信息自动绘制一张结构图,结构图由n个图标和图标之间的连线组成,图标可以使用鼠标拖动,当图标被拖动后,图标之间的连线自动重新绘制,画线和画图标分别使用单独的组件类实现。
现在的问题是:当有2张或2张以上的图片完全重合时,点击其中一个并拖动之,此时所有重合的图片一起移动?如何解决?
------解决方案--------------------问了跟没问差不多。不知道你其他部分怎么实现的。即使思考后回答了,也不大可能是你需要的。
------解决方案--------------------说真的这么看比较头痛。如果需要。你做个简单的例子,发我邮箱,帮你看看。simtel_006@126.com
------解决方案--------------------private void m_Parent_MouseMove(object sender, MouseEventArgs e)
{
if (!this.Selected)
{
this.m_OrgPoint = Point.Empty;
return;
}
if (this.m_OrgPoint == Point.Empty)
{
this.m_OrgPoint = e.Location;
return;
}
if (e.Button == MouseButtons.Left)
{
if (this.Parent.ClientRectangle.Contains(e.Location))
{
this.m_Point.X += (e.Location.X - this.m_OrgPoint.X);
this.m_Point.Y += (e.Location.Y - this.m_OrgPoint.Y);
this.m_OrgPoint = e.Location;
this.m_Parent.Invalidate();
this.m_Parent.Update();
}
else
{
this.m_OrgPoint = Point.Empty;
this.Selected = false;
}
}
这个函数有问题吧。你的mousemove事件里获取对象的时候让对象跟sender关联。这样就唯一确定了,点哪个就动哪个。
sender用法:
((TiePaint)sender).Left
------解决方案--------------------搂主,我没有仔细看你的帖子,不过画图这块原来写过一个画图板,图形如果是矩形就把它放到一个数组里,鼠标每次点击就判断是否点在某个图形里了,如果在就做处理……,对于重叠问题,数组里有先后顺序的……如果要一起移动什么的,那好像也没什么问题啊……再声明我没仔细看你帖子:)希望你多换几种思路解决问题……
------解决方案--------------------mark
------解决方案--------------------马克