我正在绘制WPF中的交换机网络图。我可以将交换机和它们之间的连接添加到图表中。连接被绘制为Path with LineGeometry作为数据:
Shapes.Path path1;
path1 = new Shapes.Path();
path1.Stroke = Brushes.Black;
path1.StrokeThickness = 1;
LineGeometry line1 = new LineGeometry();
path1.Data = line1;
我将这条线添加到我用来表示开关的拇指上:
SwitchAsThumb thumb1 = new SwitchAsThumb;
thumb1.StartLines.Add(line1);
SwitchAsThumb定义为:
public class SwitchAsThumb : Thumb
{
public List<LineGeometry> EndLines { get; private set; }
public List<LineGeometry> StartLines { get; private set; }
}
这个方法在我的窗口xaml.cs文件中更新路径的终点位置:
public void UpdateSwitchConnections(SwitchAsThumb thumb)
{
double left = Canvas.GetLeft(thumb);
double top = Canvas.GetTop(thumb);
for (int i = 0; i < thumb.StartLines.Count; i++)
thumb.StartLines[i].StartPoint = new Point(left + thumb.ActualWidth / 2, top + thumb.ActualHeight / 2);
for (int i = 0; i < thumb.EndLines.Count; i++)
thumb.EndLines[i].EndPoint = new Point(left + thumb.ActualWidth / 2, top + thumb.ActualHeight / 2);
}
我想我可以在更新线条时在画布上的相同位置放置标签或类似物,但是我不确定当用户拖动开关以重新排列图表时标签会移动。当用户拖动拇指时,我实施的重新绘制拇指的方法可能会更新以移动标签,但我希望有一个更清洁的解决方案。