当需要一个低级别的控件来绘制若干2D图形的时候,你可以通过自定义一个继承自DrawingVisual 的类来实现。
下面的一个例子是通过一个继承自DrawingVisual 的类来显示两个图形的简单实现。
class EllipseAndRectangle : DrawingVisual
{
public EllipseAndRectangle()
{
using (DrawingContext dc = RenderOpen())
{
// Black ellipse with blue border
dc.DrawEllipse(Brushes.Black,
new Pen(Brushes.Blue, 3), // Border
new Point(120, 120), 20, 40); // Center & radius
// Red rectangle with green border
dc.DrawRectangle(Brushes.Red,
new Pen(Brushes.Green, 4), // Border
new Rect(new Point(10, 10), new Point(80, 80))); // Corners
}
}
}
RenderOpen 方法运行我们渲染一些内容到DrawingVisual 里面(打开用于呈现的 DrawingVisual 对象),RenderOpen 返回一个DrawingContext实例,用来绘制图形。
DrawingContext 会将所有绘制的指令缓存,因此我们只需要在构造函数中关注我们的绘制指令(译者:这一句具体要表达什么?)。
原文地址:https://wpf.2000things.com/2011/03/02/233-an-example-of-deriving-from-drawingvisual-class/