#233 – DrawingVisual类的一个例子

来源:互联网 发布:php 那个版本速度快 编辑:程序博客网 时间:2024/06/15 06:39

当需要一个低级别的控件来绘制若干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/



0 0