WPF关于2D绘图的基础类简要

来源:互联网 发布:深度linux deepin安装 编辑:程序博客网 时间:2024/05/18 02:48


      进入2010,终于逃离了Framework 1.1的阴影,步入3.5时代。下面整理了一些关于WPF在2D绘图方面的概念,希望帮助大家少走点弯路。

 

DrawingVisual 是一个轻量绘图类,用于呈现形状、图像或文本。此类之所以被视为轻量类,是因为它不提供布局、输入、焦点或事件处理功能,从而能够改善其性能。因此,绘图是背景和剪贴画的理想选择。

 

Geometry 类和 Shape 类比较


它们都可用来呈现二维图形,并且从其自身派生的具体类也很相似,例如 EllipseGeometry 和 Ellipse。然而,这两种类之间存在着重大差异。其中有一个差异就是 Geometry 类没有 Shape 类的某些功能,例如自行绘制的功能。若要绘制一个几何图形对象,必须使用其他类(例如 DrawingContext、Drawing 或 Path,需要注意 Path 是一种 Shape)来执行此绘制操作。诸如填充、笔画和笔画粗细之类的呈现属性针对绘制此几何图形对象的类,而形状对象包括这些属性。可以这样来理解此差异:几何图形对象定义一个区域(如圆形),而形状对象不仅定义一个区域,还定义如何填充和描绘此区域并参与布局系统。

 

StreamGeometry sg = new StreamGeometry();
using (StreamGeometryContext sgc = sg.Open())
{
  sgc.BeginFigure(new Point(10, 10), false, false);
  sgc.LineTo(new Point(200, 200), true, false);
}

 

使用 Path 呈现 Geometry

 

Path p = new Path();
p.Stroke = Brushes.Black;
p.StrokeThickness = 1;
p.Data = sg;

 

使用 DrawingVisual 呈现 Geometry

 

GeometryDrawing gd = new GeometryDrawing(null, new Pen(Brushes.Black, 1), sg);           
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.RenderOpen())
{
  dc.DrawDrawing(gd);
}

 

StreamGeometry 和 PathGeometry 比较


PathGeometry 类和 StreamGeometry 类提供了描绘由弧线、曲线和直线组成的多个复杂图形的方法。StreamGeometry 对象是 PathGeometry 的一个轻量替代品。与 PathGeometry 不同,StreamGeometry 是经过优化的,可用于处理多个 PathGeometry 对象,并且相对于使用多个独立的 PathGeometry 对象而言,其执行效率更高。StreamGeometry 的内容不支持数据绑定、动画或修改。当您需要描绘复杂的几何图形,但不希望因为支持数据绑定、动画或修改而引入系统开销时,可使用 StreamGeometry。由于它的高效,StreamGeometry 类是描绘装饰物的理想选择。

 

Drawing 对象是轻量对象,允许您将几何形状、图像、文本和媒体添加到应用程序中。Drawing 对象被视为轻量对象,因为它们不提供对布局系统、输入概述和焦点的支持。因为这些对象具有性能优势,所以绘图是

背景和剪贴画的理想选择。当在 Visual 级别编程时,也可使用绘图。

 

另外有一张图片以显示了它们所在命名空间的树型结构,因为CSDN暂时关闭了图片上传功能,所以以后再说吧,有兴趣的朋友可以查查MSDN。

 

原创粉丝点击