我是StackOverflow社区的新手,请原谅我糟糕的英语,我试着将其搞定。
我正在使用你的帮助进行我的bachelorthesis,你已经帮了我很多,谢谢。我正在编写一个工具来可视化无线网络中的数据。
我将一个GeometryGroup添加到我的Canvas中,以便将一些CustomControls与一行连接起来。正在更新该行,移动控件等。我使用了以下文章:https://denisvuyka.wordpress.com/2007/10/21/wpf-diagramming-drawing-a-connection-line-between-two-elements-with-mouse/使其正常工作。
这是我在XAML中使用的代码。
<Path Name="myPath" Stroke="#FF132FE0" StrokeThickness="1">
<Path.Data>
<GeometryGroup x:Name="connectors"/>
</Path.Data>
</Path>
我要做的是创建自己的canvas类并在后面的代码中添加GeometryGroup。我试图做的是:
System.Windows.Shapes.Path pathGroup= new System.Windows.Shapes.Path();
BrushConverter bc = new BrushConverter();
Brush Brush = (Brush)bc.ConvertFrom("#FF132FE0");
cmp.Stroke = Brush;
cmp.StrokeThickness = 1;
GeometryGroup connectors= new GeometryGroup();
pathGroup.Data=connectors;
我的问题是,它没有按预期工作。使用XAML实现,我可以使用以下内容:
connectors.Children.Add(obj);
我试着总结一下我的问题。我想用c#代码创建一个GeometryGroup,以便能够随时添加和删除行。
谢谢=)
答案 0 :(得分:0)
您可能希望拥有一个带有connectors
字段的派生Canvas(类似于您问题中显示的XAML创建的字段)。
Canvas将通过覆盖的OnRender
方法绘制连接器,如下所示。
public class CustomCanvas : Canvas
{
private readonly GeometryGroup connectors = new GeometryGroup();
protected override void OnRender(DrawingContext dc)
{
var stroke = new SolidColorBrush(Color.FromRgb(0x13, 0x2F, 0xE0));
dc.DrawGeometry(null, new Pen(stroke, 1), connectors);
base.OnRender(dc);
}
}
派生的Canvas类的另一个方法中的一些附加代码现在可以在Children
对象的connectors
集合中添加或删除Geometry对象。
您当然也可能要为连接器的Stroke,StrokeThickness等声明属性。