Silverlight 两矩形连接线问题

HFC008 2013-08-27 11:54:45
Silverlight 如何实现(任意)两个矩形间,当拖动一个矩形释放(放开鼠标左键)后,如何让这两个矩形之间连接线的两点分别在两矩形的边界线上? (最好在拖动过程中两点也保持在两矩形的边界线上).

下图的蓝色线是我想要实现的需求功能.


這裡有位达人的一篇博客可參考(高手用的是圆形):http://www.cnblogs.com/chengxingliang/archive/2012/03/13/2390404.html

请高手们赐教哦!
...全文
231 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
HFC008 2013-09-01
  • 打赏
  • 举报
回复
madaming大大:我加您关注了,方便私信或加我QQ(1462320803)聊么?(必须有偿服务!)
海涵德 2013-09-01
  • 打赏
  • 举报
回复
private rectangle my_rectangle =new rectangle();
my_rectangle.event_move +=    ....(on_event_moved);

private void on_event_moved(point p)
{
//根据p点修改线段位置
.....
}
海涵德 2013-09-01
  • 打赏
  • 举报
回复
你把事情想得太复杂了,8楼的回复只是矩形移动后引起的事件,代码里面的poing p需要你自己计算,为了简单我没有继续细写。实际上如果矩形是Image类型的对象,它就应该有位置和大小可以读到,矩形在canvas或grid中的位置是不一样,canvas中的位置是left和top,而grid中的位置是margin决定,大小是相同的都是actualwidth和actualheight,你需要自己计算那个事件要带走的p。
海涵德 2013-09-01
  • 打赏
  • 举报
回复
你把事情想得太复杂了,8楼的回复只是举行移动后引起的事件,代码里面的poing p需要你自己计算,为了简单我们有继续细写,实际上如果矩形是Image类型的对象,它就应该有位置和大小可以读到,矩形在canvas或grid中的位置是不一样,canvas中的位置是left和top,而grid中的位置是margin决定,大小是相同的都是actualwidth和actualheight,你需要自己计算那个事件要带走的p。
海涵德 2013-09-01
  • 打赏
  • 举报
回复
可以,共同研讨,分享成果,创造价值。
HFC008 2013-08-31
  • 打赏
  • 举报
回复
实际情况:这两个点一个(起点)是PathFigure的StartPoint,(终点是)LineSegment的Point,(都有各自的x,y坐标) 两个矩形是Image图片(BitmapImage方式),两个点都有TranslateTransforms方法,(实际是)当其中任一个点移动时(看到的是图片移动),该点的图片(矩形)也会移动. 目前能获取到任一个(或是说所有)点拖放后的坐标点,也能使得这两个点连接后,看起来是两个矩形中心点连接,这个任一矩形(图片)随便移动都会连接中心点(因为只会平移矩形,不会旋转它,目前已实现) 但实际想要的是:如题上图:当任一个矩形移动释放后,连接的是两个图片边线的中点!
HFC008 2013-08-31
  • 打赏
  • 举报
回复
期待大佬们相助啊!
HFC008 2013-08-30
  • 打赏
  • 举报
回复
非常非常非常感谢---madaming!你的热情让我向你致敬! 1.是后台生成的代码;
引用 6 楼 madaming 的回复:
不知道你说的什么? 在哪条边线上? 矩形和线段是怎样生成的,是xaml中的还是后台代码生成的? 说明了这些才能给你解决的办法和代码。
2.我觉得您说是我想要的(而且是非常好的一种方案),8楼的代码是实现定位修改自己的两个端点为矩形的边中点么?
引用 7 楼 madaming 的回复:
办法很多,一般的是矩形对象定义一个位置移动事件,当矩形移动时raise事件,线段响应事件后修改自己的两个端点为矩形的边中点。
海涵德 2013-08-30
  • 打赏
  • 举报
回复
class rectangle
{
public delegate void event_move_handler(poing p);
public event event_move_handler event_move;

////////
public void move()
{
point p =new point();
if (event_move!=null) event_move(p);

}

}
海涵德 2013-08-30
  • 打赏
  • 举报
回复
办法很多,一般的是矩形对象定义一个位置移动事件,当矩形移动时raise事件,线段响应事件后修改自己的两个端点为矩形的边中点。
海涵德 2013-08-30
  • 打赏
  • 举报
回复
不知道你说的什么? 在哪条边线上? 矩形和线段是怎样生成的,是xaml中的还是后台代码生成的? 说明了这些才能给你解决的办法和代码。
HFC008 2013-08-30
  • 打赏
  • 举报
回复
高手们还有其他的办法么?
HFC008 2013-08-29
  • 打赏
  • 举报
回复
silverlight真的没落了啊...?
HFC008 2013-08-29
  • 打赏
  • 举报
回复
还是不太明白啊,哪位达人能具体说明下么?有例子更好咯
HFC008 2013-08-29
  • 打赏
  • 举报
回复
谢谢楼上达人这么晚都出来提示哦
  • 打赏
  • 举报
回复
假设连线是两个矩形的中心点连线,你可以设置连线的ZIndex值比矩形的ZIndex小,于是连线会被矩形区域挡住,看上去就是好像是矩形边互联一样(其实是中心点互联)。

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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