2011-01-21 32 views
2

我有几个常用的符号已由WPF形状主体(例如矩形,线条,路径等)组成。这些符号当前以用户控件的形式存储在xaml文件中。例如:将XAML形状绘制为DrawingContext?

<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作为输入。

任何想法将不胜感激。

谢谢你,艾伦

回答

4

如果你让你的画布可以使用的drawImage到像一个ImageSource的:

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); 
+0

这是完美的,正是我一直在寻找。谢谢! –