CanvasPane предназначен для рисования произвольных линий. Под линией подразумевается упорядоченный массив точек (x; y) Чтобы нарисовать что-то из API, необходимо в качестве результата работы блока вернуть объект класса InteractiveSeries. Схематично алгоритм такой: 1. Создаём обычным способом блок на базе IStreamHandler 2. Готовим набор точек с использованием классов InteractivePointLight или InteractivePointActive (второй является наследником первого и предоставляет дополнительные возможности по выводу меток рядом с узлами) 3. Помещаем подготовленные точки в коллекцию IEnumerable<InteractiveObject> например вот так: List<InteractiveObject> controlPoints = new List<InteractiveObject>(); controlPoints.Add(new InteractiveObject(p1)); controlPoints.Add(new InteractiveObject(p2)); 4. Создаём результирующую InteractiveSeries и даём её коллекцию точек: InteractiveSeries res = new InteractiveSeries(); res.ControlPoints = new ReadOnlyCollection<InteractiveObject>(controlPoints); 5. Возвращаем res как результат работы метода Execute(...) 6. В атрибутах класса описываем выход так: [OutputType(TemplateTypes.INTERACTIVESPLINE)] Как пример инициализации точки: InteractivePointActive p1 = new InteractivePointActive(x, y); p1.Geometry = Geometries.Ellipse; p1.Color = System.Windows.Media.Colors.Cyan; p1.Tooltip = String.Format("K:{0}; IV:{1:0.00}", x, y);
|