Рисовать XAML фигуры в DrawingContext? - PullRequest
2 голосов
/ 21 января 2011

У меня есть несколько общих символов, которые состоят из приматов формы WPF (например, Rectangle, Line, Path и т. Д.).Эти символы в настоящее время хранятся в файлах xaml как пользовательские элементы управления.Например:

<Canvas x:Name="Symbol" Width="100" Height="100">
    <Rectangle x:Name="Rectangle" Width="100" Height="100" Stretch="Fill">
        <Rectangle.Fill>
            <SolidColorBrush Color="Aqua"></SolidColorBrush>
        </Rectangle.Fill>
    </Rectangle>
</Canvas>

Выше приведен простой пример, но большинство моих символов более сложны и состоят из множества разных частей.Итак, я надеялся использовать эти пользовательские элементы управления для хранения символов и облегчения их манипулирования.

Я довольно много рисую в методе Canvas OnRender и хотел бы включить некоторые изсоставные символы на моем рисунке.Можно ли получить их в формате, чтобы нарисовать их в DrawingContext?Я знаю, что есть метод DrawingContext.DrawImage, но он принимает ImageSource в качестве входных данных.

Любые идеи будут высоко оценены.

1 Ответ

4 голосов
/ 21 января 2011

Вы можете использовать drawimage, если превратите свой холст в источник изображения, например:

VisualBrush vb = new VisualBrush(canvas);
GeometryDrawing gd = new GeometryDrawing(vb, new Pen(Brushes.Transparent, 0), new RectangleGeometry(new Rect(0, 0, width, height)));
img = new DrawingImage(gd);
...