连接两个形状在一起,Silverlight2
-
19-08-2019 - |
题
我正在寻找连接或粘合在一起的两个形状或物体。这些外形将产生的动态,这意味着我会打电话网服务台,以确定如何能多的对象/形状的需要而创建的。一旦确定,我需要有对象/形状连接在一起。
该方法的签名可能是这样的(类似于Visio的绘图功能):
GlueTogether(objButton1, objButton2);
我可能需要获得该地位的每个矩形或钮来确定起始点。然后确定第二形/物体的位置,以划清界线。
任何帮助或建议将是伟大的!
解决方案
- 使用的道路或一个线以下的状堆订单或z索引
- 使用的实例。TransformToVisual()得到转换的每一个形状
- 使用的转变,以改变该中心的每个形状
- 划一条线之间的两centerpoints.
var transform1 = shape1.TransformToVisual(shape1.Parent as UIElement);
var transform2 = shape2.TransformToVisual(shape2.Parent as UIElement);
var lineGeometry = new LineGeometry()
{
StartPoint = transform1.Transform(new Point(shape1.ActualWidth / 2, shape1.ActualHeight / 2.0)),
EndPoint = transform2.Transform(new Point(shape2.ActualWidth / 2.0, shape2.ActualHeight / 2.0))
};
var path = new Path()
{
Data = lineGeometry
};
其他提示
我想大致相同,但不是到其他行从一个中心去我想要的线路停止在两个形状的边缘。 我特别有箭头的线的端部,并且箭头需要在形状的边界停止的去内/形状后面到其中心而不是
我的形状是与网格和矩形,一些标签和其他东西一个用户控件。 我无法找到我提供为所述形状的边缘(其为圆角矩形)的几何形状的任何方法。
我想出使用所述边界框和交点到由线我的元件在其近似边连接的溶液,它使用箭头端线很适合我。
检查了这一点: HTTP://www.graphspe。 COM / Main.aspx#/解决方案/ graphviz的-XAML的渲染器
所有你需要做的是对的printf一个字符串,你会得到你的Silverlight [2 | 3]。图
Ceyhun
另外...而不是连接到你的对象的中心点,我从迈克尔S.修改的同一代码:
var lineGeometry = new LineGeometry()
{
StartPoint = transform1.Transform(new Point(1 , b1.ActualHeight / 2.0)),
EndPoint = transform2.Transform(new Point(b2.ActualWidth , b2.ActualHeight / 2.0))
};
这将在每个对象的外部分连接。
我使用上面的代码绘制两个按钮,我想这两个按钮之间的一条线,但我得到的是看起来像转圈儿,没有线两个按钮。
代码:
Button b1 = new Button();
Button b2 = new Button();
canvas1.Children.Add(b1);
canvas1.Children.Add(b2);
Canvas.SetLeft(b1, 300);
var transform1 = b1.TransformToVisual(b1.Parent as UIElement);
var transform2 = b2.TransformToVisual(b2.Parent as UIElement);
var lineGeometry = new LineGeometry()
{
StartPoint = transform1.Transform(new Point(1, b1.ActualHeight / 2.0)),
EndPoint = transform2.Transform(new Point(b2.ActualWidth, b2.ActualHeight / 2.0))
};
var path = new Path()
{
Data = lineGeometry
};
canvas1.Children.Add(path);
不隶属于 StackOverflow