मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसमें दो ऑब्जेक्ट्स के बीच घुमावदार पथ शामिल हैं। वर्तमान में, मैं बेजियर वक्र और एनीमेशन के साथ खेलने के लिए कुछ टेस्ट कोड लिख रहा हूं। पहला परीक्षण सीधे ऑब्जेक्ट (प्वाइंट 3) को ऑब्जेक्ट ऑब्जेक्ट (आयत) से गंतव्य ऑब्जेक्ट (एक अन्य आयताकार) तक सीधे सीधी रेखा में ले जाने के लिए है। यहां कोड है जो वास्तविक रेखा सेट करता है:डब्ल्यूपीएफ एनीमेशन - एनिमेटिंग बेजियर वक्र पॉइंट
connector = new Path();
connector.Stroke = Brushes.Red;
connector.StrokeThickness = 3;
PathGeometry connectorGeometry = new PathGeometry();
PathFigure connectorPoints = new PathFigure();
connectorCurve = new BezierSegment();
connectorPoints.StartPoint = new Point((double)_rect1.GetValue(Canvas.LeftProperty) + _rect1.Width/2,
(double)_rect1.GetValue(Canvas.TopProperty) + _rect1.Height/2);
connectorCurve.Point1 = connectorPoints.StartPoint;
connectorCurve.Point2 = connectorPoints.StartPoint;
connectorCurve.Point3 = connectorPoints.StartPoint;
connectorPoints.Segments.Add(connectorCurve);
connectorGeometry.Figures.Add(connectorPoints);
connector.Data = connectorGeometry;
MainCanvas.Children.Add(connector);
ठीक है, तो अब हमारे पास एक बिंदु पर एक रेखा गिर गई है। अब, देता है कि लाइन चेतन, (अंतिम बिंदुओं पर दो वस्तुओं) _rect2 को _rect1 से जा रहा: खूबसूरती से
PointAnimation pointAnim = new PointAnimation();
pointAnim.From = connectorCurve.Point3;
pointAnim.To = new Point((double)_rect2.GetValue(Canvas.LeftProperty) + _rect2.Width/2,
(double)_rect2.GetValue(Canvas.TopProperty) + _rect2.Height/2);
pointAnim.Duration = new Duration(TimeSpan.FromSeconds(5));
board.Children.Add(pointAnim);
काम करता है। हालांकि, जब मैं इसे स्टोरीबोर्ड से करने की कोशिश करता हूं, तो मुझे कुछ भी नहीं मिलता है। यहां स्टोरीबोर्ड कोड है:
Storyboard board = new Storyboard();
PointAnimation pointAnim = new PointAnimation();
pointAnim.From = connectorCurve.Point3;
pointAnim.To = new Point((double)_rect2.GetValue(Canvas.LeftProperty) + _rect2.Width/2,
(double)_rect2.GetValue(Canvas.TopProperty) + _rect2.Height/2);
pointAnim.Duration = new Duration(TimeSpan.FromSeconds(5));
Storyboard.SetTarget(pointAnim, connectorCurve);
Storyboard.SetTargetProperty(pointAnim, new PropertyPath(BezierSegment.Point3Property));
board.Children.Add(pointAnim);
board.Begin();
कुछ भी नहीं चलता है। मुझे संदेह है कि मैं SetTarget या SetTargetProperty को खिला रहा हूं, लेकिन इसे समझने में प्रतीत नहीं होता है। क्या किसी को WPF में एनिमेटिंग लाइन/बेजियर पॉइंट्स के साथ अनुभव है?
मुझे यकीन नहीं है कि आपकी समस्या का समाधान होगा, लेकिन आप इस पोस्ट में कुछ प्रेरणा पा सकते हैं: http://www.japf.fr/?p=227 –