空の 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 「値が期待される範囲内にありません」をスローします。一度範囲内にいて、その後すぐに範囲外にするにはどうすればよいですか? このようなコードでパスを複製する正しい方法は何ですか?