Practical WPF Charts and Graphics Note_01

Practical WPF Charts and Graphics Note_01

参考网址:
https://www.cnblogs.com/tuyile006/p/7656204.html
https://www.cnblogs.com/tuyile006/p/7656204.html

Geometry(几何图形)

在WPF中可以绘制矢量图,不会随窗口或图型的放大或缩小出现锯齿或变形,以下几个基本的图形,他们都派生于Shape类

Line 直线段
Rectangle 矩形
Ellipse 椭圆
Polygon 多边形
Polyline 折线,不闭合
Path 路径

路径在绘图中是属于比较重要的一个类,可替换上面的几个图形工具,而且还可以画出更复杂的图像。
路径不仅有Stroke,StrokeThickness等属性,还有个关键的属性——Data,其类型为Geometry(几何图形),可通过这个属性来替代其他绘图类的。
在WPF图形体系中,Geometry类表示几何图形的基类,为一个抽象类,使用的时候是实例化它的一些子类,具体的有:

LineGeometry:直线段几何图形
RectangleGeometry :矩形几何图形
EllipseGeometry:椭圆几何图形

以上三个和它们对应的Shape类有相似,同样可以设置属性,来改变图形的形状。

PathGeometry:路径几何图形
路径集合图形PathGeometry里可以包含一系列几何图形集合,主要是通过多个LineSegment(线段)组成PathFigure,多个PathFigure组成PathGeometry(几何图形)。几何是由图组成,图是由多个段围成的,除此之外还有一个要注意的是每个段都是上一个段的终点作为起点的。常见的有:
线段: LineSegment
弧:ArcSegment
贝塞尔曲线::
BezierSegment:在两个点之间创建一条三次方贝塞尔曲线。
PolyBezierSegment:创建一系列三次方贝塞尔曲线。
PolyQuadraticBezierSegment:创建一系列二次贝塞尔曲线。
QuadraticBezierSegment:创建一条二次贝塞尔曲线。

StreamGeometry
通过一系列API来绘制的StreamGeometry。它不支持绑定,动画,相应也更加灵活而高效。

复合几何图形
CombinedGeometry
GeometryGroup

使用 GeometryGroup、CombinedGeometry 或者通过调用静态的 Geometry 方法 Combine,可以创建复合几何图形对象。它们主要的区别是:

CombinedGeometry 对子图形进行叠加操作,没有面积的子图形将被丢弃。只能组合两个子图形(但是这两个子图形也可以是复合几何图形)。
GeometryGroup 只进行组合,而不进行面积叠加。可以添加多个子图形。

Geometry对象中本身还包含了一系列非常有用的方法,如:

GetArea - 获取 Geometry 的面积。
FillContains - 确定是否包含其他 Geometry。
StrokeContains - 确定是否包含指定的点。
Bounds:获取外接矩形
这些都是非常常用的方法,例如FillContains,StrokeContains用于鼠标命中测试是非常方便的。

呈现方式

Geometry对象并不能作为图像独立呈现出来,它一般有如下几种呈现方式:
在Path中呈现:可以作为GeometryDrawing.Geometry的参数呈现为Path对象
在DrawingContext中呈现:可以作为DrawingContext. DrawGeometry的参数呈现
在GeometryDrawing中呈现:可以作为GeometryDrawing.Geometry的参数呈现为Drawing对象

当然,Drawing对象也不能独立呈现,一般是作为DrawingBrush或作为DrawingContext.DrawDrawing的参数来使用的

在WPF中的变形,不仅包括拉长,挤扁、放大、缩小等,还包括尺寸、位置、坐标比例、旋转角度等的变化。控制变形的属性有两个:
RenderTransform:呈现变形,定义在UIElement类中。
LayoutTransform:布局变形,定义在FrameworkElement类中。

由于FrameworkElement类派生于UIelement类,而控件的基类Control类又派生于FrameworkElement类,所以说FrameworkElement类有两个属性。除此之外,还要知道上面的两个属性都是依赖属性,他们的类型为Transform 抽象类,此抽象类派生的类型有下面几个:

MatrixTransform:矩阵变形
RotateTransform:旋转变形
ScaleTransform:坐标变形
SkewTransform:拉伸变形
TranslateTransform:偏移变形
TransformGroup:变形组


PathGeometry用法

XAML(代码A):
在这里插入图片描述

请留意上面加粗及红色文字部分。WPF提供两个类来描述路径数据:一个是StreamGeometry,另一个是PathFigureCollection。

类似: 的形式是StreamGeometry的XAML代码表示形式,也是最简洁的表示形式。
而类似:
在这里插入图片描述
这样的方式是使用PathFigureCollection的XAML代码表示方式。

两种方式都可以达至同一种显示效果,一般地,当你建立路径后,不再需要修改时,可使用StreamGeometry方式,如果还需要对路径数值进行修改,则使用PathFigureCollection方式(这里就是PathGeometry)。
在这里插入图片描述

常用的笔刷Brush类型有:

· SolidColorBrush:使用纯 Color 绘制区域。
· LinearGradientBrush:使用线性渐变绘制区域。 其中有个GradientStop属性,径向渐变也有可以查看msdn,我觉得上面说的还是比较清楚的。
· RadialGradientBrush:使用径向渐变绘制区域。
· ImageBrush:使用图像(由 ImageSource 对象表示)绘制区域。
· DrawingBrush:使用 Drawing 绘制区域。 绘图可能包含向量和位图对象。
· VisualBrush:使用 Visual 对象绘制区域。 使用 VisualBrush 可以将内容从应用程序的一个部分复制到另一个区域,这在创建反射效果和放大局部屏幕时会非常有用

猜你喜欢

转载自blog.csdn.net/lm393485/article/details/109047017