我有一条曲线
PathFigure pathFigure = new PathFigure();
QuadraticBezierSegment pathSeg = new QuadraticBezierSegment(p2,p3,true);
pathFigure.Segments.Add(pathSeg);
pathFigure.StartPoint = p1;
pathFigure.IsClosed = false;
pathGeometry.Figures.Add(pathFigure);
我如何改变曲线的点?那是我尝试过的:
System.Windows.Point a = new System.Windows.Point(p.X, p.Y);
((BezierSegment)s).SetValue(BezierSegment.Point3Property,a);
但我得到以下异常
" System.Windows.Media.BezierSegment"无法设置object属性,因为它处于只读状态。*
异常消息是从波兰语翻译而来的。可能与原始版本不是100%相似。
答案 0 :(得分:0)
我无法改变坐标,因为我的曲线是冰冻的 我们只需要正确地获得几何。
PathGeometry pathGeometry = (PathGeometry)path.Data;
不
PathGeometry pathGeometry = path.Data.GetOutlinedPathGeometry();
答案 1 :(得分:-1)
您的路径或几何图形或其他内容被冻结。您无法更改冻结的对象。查找并省略.Freeze()
,然后它应该有效。
Freezable是一种特殊类型的对象,有两种状态:解冻 和冷冻。解冻后,Freezable似乎表现得像任何一样 其他对象。冻结时,Freezable无法再修改。
Freezable提供Changed事件以通知观察者任何事件 对对象的修改。冻结Freezable可以改善它 性能,因为它不再需要在变更上花费资源 通知。冻结的Freezable也可以在线程之间共享, 而一个解冻的Freezable则不能。
...
一旦冻结,Freezable永远不会被修改或解冻;然而, 您可以使用克隆或 CloneCurrentValue 创建未冻结的克隆 方法。
如果满足以下任何条件,Freezable将无法冻结:
•它具有动画或数据绑定属性。
•它具有由动态资源设置的属性。 (参见XAML资源 有关动态资源的更多信息。)
•它包含无法冻结的Freezable子对象。