WPF学习(一)绘制图形的三种方法及区别
2013-03-02 14:02
501 查看
WPF中用于绘图的类主要有三个,分别是Shape类、Drawing类和DrawingVisual类,Shape类存在于System.Windows.Shapes命,而Drawing类和DrawingVisual类则都存在于 System.Windows.Media名字空间,下面简要介绍一下三个类的区别:
1)Shape类: Shape继承自FrameworkElement,FrameworkElement继承自UIElement,包含在System.Windows.Shapes命名空间中,而WPF大部分控件均继承自System.Windows.Shapes类,因此,也可以将Shape及其继承类看成是特殊的图形控件,具有大多数控件通用的属性和事件,如果创建图元规模较小的程序,采用Shape应该是比较好的选择。Shape类派生情况如下:
ContainerVisual,ContainerVisual又继承自Visual,在 System.Windows.Media名字空间中,如果要编制涉及数千个图元的创建和编辑的应用程序,建议采用DrawingVisual类,但同时由于DrawingVisual不支持任何事件,若需要对图元进行编辑,最好编写继承自DrawingVisual自定义图元。DrawingVisual类没有派生对象,绘图是通过DrawingContext类进行的,DrawingContext类继承自System.Windows.Threading.DispatcherObject,属于比较基础的类,与WPF实现机制有较大关系,该类只有Dispatcher
1个属性,其他的都是方法,大部分以Draw开头,以下列出常用的几种方法:
3)Drawing类:Drawing类继承自 Animatable,根源来自Freezable类,与Animation类有着千丝万缕的联系,与Shape类和DrawingVisual类根源均继承自Visual类存在较大区别,它的开销介于Shape类和DrawingVisual类之间,如果需要创建频繁修改的图元对象时,可以采用Drawing类。Drawing类派生类如下:
以上三类的继承关系如下所示:
1)Shape类: Shape继承自FrameworkElement,FrameworkElement继承自UIElement,包含在System.Windows.Shapes命名空间中,而WPF大部分控件均继承自System.Windows.Shapes类,因此,也可以将Shape及其继承类看成是特殊的图形控件,具有大多数控件通用的属性和事件,如果创建图元规模较小的程序,采用Shape应该是比较好的选择。Shape类派生情况如下:
ContainerVisual,ContainerVisual又继承自Visual,在 System.Windows.Media名字空间中,如果要编制涉及数千个图元的创建和编辑的应用程序,建议采用DrawingVisual类,但同时由于DrawingVisual不支持任何事件,若需要对图元进行编辑,最好编写继承自DrawingVisual自定义图元。DrawingVisual类没有派生对象,绘图是通过DrawingContext类进行的,DrawingContext类继承自System.Windows.Threading.DispatcherObject,属于比较基础的类,与WPF实现机制有较大关系,该类只有Dispatcher
1个属性,其他的都是方法,大部分以Draw开头,以下列出常用的几种方法:
名称 | 说明 |
DrawDrawing | 绘制指定的Drawing 对象。 |
DrawEllipse | 使用指定的 Brush和 Pen 绘制一个椭圆。 |
DrawGeometry | 使用指定的 Brush和 Pen 绘制指定的Geometry。 |
DrawLine | 使用指定的 Pen 在两个指定的点之间绘制一条线。 |
DrawRectangle | 使用指定的 Brush和 Pen 绘制一个矩形。pen 和 brush 都可以为 null。 |
DrawText | 在指定位置绘制格式化文本。 |
名称 | 说明 |
System.Windows.Media.DrawingGroup | 表示可以作为单个绘图进行运算的绘图集合。 |
System.Windows.Media.GeometryDrawing | 使用指定的 Brush 和 Pen 绘制 Geometry。 |
System.Windows.Media.GlyphRunDrawing | 表示一个呈现 GlyphRun 的 Drawing 对象。 |
System.Windows.Media.ImageDrawing | 在由 Rect 定义的区域内绘制图像。 |
System.Windows.Media.VideoDrawing | 播放媒体文件。如果媒体为视频文件,则 VideoDrawing 会将其绘制到指定的矩形中。 |
相关文章推荐
- WPF学习(一)绘制图形的三种方法及区别
- 图形绘制Canvas类的方法save()和restore()的区别
- 【OpenGL】学习笔记之一 绘制基本图形单元的方法
- 走进WPF系列学习之二 如何用WPF绘制与配置2D图形界面
- webgl学习笔记2--图形绘制的几个重要方法详解
- JAVA学习笔记49——线程概念+进程、线程区别+创建进程三种方法
- WPF2D绘制图形方法
- 【原创】XNA 4.0学习笔记之-绘制基元图形的几种PrimitiveType区别[PS:4.0似乎有所改动]
- 【Java学习笔记之六】java三种循环(for,while,do......while)的使用方法及区别
- WPF3D学习,立方体的绘制
- OpenGL_Qt学习笔记之_02(绘制简单平面几何图形)
- 【学习总结】三种发送短信的方法和四种按钮的点击事件
- 学习笔记之XML的三种l解析方法
- IOS学习笔记 运用Quartz 2D框架绘制常见的图形(2)
- WPF学习12:基于MVVM Light 制作图形编辑工具(3)
- android学习 4-25使用Path 绘制几何图形
- 在 C# 中,(int),Int32.Parse() 和 Convert.toInt32() 三种方法有何区别?
- 验证码制作之五: 绘制带背景图的图形验证码方法
- C++ Builder 使用Canvas的方法来绘制图形对象
- WPF and Silverlight 学习笔记(二十六):基本图形使用(1)