c# - 将两个形状连接在一起,Silverlight 2

标签 c# wpf silverlight expression

我想用一条线将两个形状或对象连接或粘合在一起。这些形状将动态生成,这意味着我将调用后端的 Web 服务来确定需要创建多少对象/形状。确定后,我需要将对象/形状连接在一起。

方法签名可能如下所示(类似于 Visio 的绘图功能):

GlueTogether(objButton1, objButton2);

我可能需要获取每个 Rectangle 形状或 Button 的位置以确定起点线的位置。然后确定第二个形状/对象的位置来画线。

任何帮助或建议都会很棒!

最佳答案

  1. 按堆叠顺序或 z 索引在形状下方使用路径或线
  2. 使用 instance.TransformToVisual() 获取每个形状的变换
  3. 使用变换对每个形状的中心点进行变换
  4. 在两个中心点之间画一条线。

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
};

关于c# - 将两个形状连接在一起,Silverlight 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/467951/

相关文章:

c# - Null Dapper.net 查询仍然使用 FirstOrDefault() 返回 Null Reference Exception

c# - WPF ICommand如何用简单的字符串表示以与UI松散耦合?

wpf - 每次击键而不是在用户输入结束时都调用转换器

Silverlight 布局状态前加载 -> 后加载转换只是不工作

Silverlight XamlWriter

c# - 单击 Silverlight 时更改 ToggleButton 图像

c# - DBMetal 为 sqlite_sequence 生成无效类

c# - 更新实体时序列不包含元素

c# - Json.net 反序列化不一致的 JSON

WPF 和超大图像