WPF学习(一)绘制图形的三种方法及区别

   WPF中用于绘图的类主要有三个,分别是Shape类、Drawing类和DrawingVisual类,Shape类存在于System.Windows.Shapes命,而Drawing类和DrawingVisual类则都存在于 System.Windows.Media名字空间,下面简要介绍一下三个类的区别:

   1)Shape类: Shape继承自FrameworkElementFrameworkElement继承自UIElement,包含在System.Windows.Shapes命名空间中,而WPF大部分控件均继承自System.Windows.Shapes类,因此,也可以将Shape及其继承类看成是特殊的图形控件,具有大多数控件通用的属性和事件,如果创建图元规模较小的程序,采用Shape应该是比较好的选择。Shape类派生情况如下:

类名

说明

System.Windows.Shapes.Ellipse

椭圆

System.Windows.Shapes.Line

直线

 System.Windows.Shapes.Path

路径,可以组合成其他形状,功能最强大的绘图类

System.Windows.Shapes.Polygon

多边形

System.Windows.Shapes.Polyline

多段线

System.Windows.Shapes.Rectangle

矩形

  2)DrawingVisual类号称是WFP中最轻量级的绘图类,继承自ContainerVisualContainerVisual又继承自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

在指定位置绘制格式化文本。

  3)Drawing类:Drawing类继承自 Animatable,根源来自Freezable类,与Animation类有着千丝万缕的联系,与Shape类和DrawingVisual类根源均继承自Visual类存在较大区别,它的开销介于Shape类和DrawingVisual类之间,如果需要创建频繁修改的图元对象时,可以采用Drawing类。Drawing类派生类如下:

名称

说明

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 会将其绘制到指定的矩形中。

以上三类的继承关系如下所示:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值