我需要使用WPF渲染一些几何体。我不想因为UI开销而使用形状。我想通过drawingContext渲染。现在有不同的方法来达到drawingContext。据我所知,一个选项是使用Drawing类的后代,例如Drawinggroup,请参阅:
using(var context = System.Windows.Media.drawingGroup.Open())
{
context.DrawGeometry(Brushes.Blue, shapeOutlinePen, polygon);
}
我可以创建一个DrawingImage并将其用作ImageSource以便显示,请参阅:
var drawingImage = new DrawingImage(drawingGroup);
this.image1.Source = drawingImage;
另一种选择是使用DrawingVisual类,如下所示:
var visual = new DrawingVisual();
using (DrawingContext context = visual.RenderOpen())
{
context.DrawGeometry(Brushes.Blue, shapeOutlinePen, polygon1);
context.DrawGeometry(Brushes.Blue, shapeOutlinePen, polygon2);
context.Close();
}
collection.Add(visual);
在这种情况下,collection是一个VisualCollection,它使用Frameworkelement作为其主机(父)。可以在UI中使用此Frameworkelement以显示视觉效果。
现在问我的问题:
用于所有输入的Thanx!
答案 0 :(得分:0)
使用DrawingContext
的最简单直接的方法是派生的UIElement或FrameworkElement的重写OnRender
方法:
public class SimpleDrawing : UIElement
{
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext); // not strictly necessary
// your rendering code goes here
}
}