DrawingVisual 是一个轻量级的类,它是用于在屏幕上绘制一系列二维矢量图形的基类。他继承自Visual 类,支持点击测试和坐标转换。它还继承ContainerVisual类,可以管理一系列单独的可视化Visual 实例。
你可以通过调用它的RenderOpen 方法获得DrawingContext 实例,然后调用它的DrawingContext 方法来绘制DrawingVisual 的内容。
DrawingVisual 的Drawing 属性表示的是DrawingVisual 绘制的2D对象的集合。
为了显示DrawingVisual 绘制的内容,必须将DrawingVisual 实例放在UIElement 或者FrameworkElement容器中。
原文地址:https://wpf.2000things.com/2011/03/01/232-the-drawingvisual-class/
*****************************************译者注******************************************
DrawingVisual 是一个可视对象,可用于在屏幕上呈现向量图形。内容由系统保存。它是一个轻量绘图类,之所以被视为轻量类,是因为它不提供布局、输入、焦点或事件处理功能,从而能够改善其性能。因此,DrawingVisual 绘图是背景和剪贴画的理想选择。
为了使用 DrawingVisual 对象,需要为这些对象创建一个承载容器。该承载容器对象必须从FrameworkElement类中派生,该类可提供DrawingVisual 类不支持的布局和事件处理支持。
它的继承结果如下:
下面的例子是使用DrawingVisual 类绘制文字。然后将绘制的内容作为图片在Image上显示。
Image myImage = new Image();
FormattedText text = new FormattedText("ABC",
new CultureInfo("en-us"),
FlowDirection.LeftToRight,
new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.Normal, new FontStretch()),
this.FontSize,
this.Foreground);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawText(text, new Point(2, 2));
drawingContext.Close();
RenderTargetBitmap bmp = new RenderTargetBitmap(180, 180, 120, 96, PixelFormats.Pbgra32);
bmp.Render(drawingVisual);
myImage.Source = bmp;