我有一个简单的处理程序,可以将椭圆添加到空的 Silverlight 画布
private void UCLoaded(object sender, RoutedEventArgs e)
{
var geometry = MakeElipse(20, 15, new Point(100, 100));
var ellipsePath = new Path
{
Data = geometry,
Fill = new SolidColorBrush(Colors.DarkGray),
StrokeThickness = 4,
Stroke = new SolidColorBrush(Colors.Gray)
};
LayoutRoot.Children.Add(ellipsePath);
//
var duplicateEllipsePath = new Path();
//duplicateEllipsePath.Data = ellipsePath.Data;
duplicateEllipsePath.Data = geometry;
duplicateEllipsePath.Fill = ellipsePath.Fill;
duplicateEllipsePath.StrokeThickness = ellipsePath.StrokeThickness;
duplicateEllipsePath.Stroke = ellipsePath.Stroke;
LayoutRoot.Children.Add(duplicateEllipsePath);
}
第一个椭圆 ellipsePath 很好,可以按预期呈现。但是该行duplicateEllipsePath.Data = ellipsePath.Data
或替代duplicateEllipsePath.Data = geometry
项都会引发 System.ArgumentException “值不在预期范围内”。它怎么可能一次在范围内,然后立即超出范围?在这样的代码中复制路径的正确方法是什么?