WPF-18:绘图和动画

来自《深入浅出WPF》(刘铁猛)读书笔记

软件项目成功与否的三个要素:资源,成本,时间。

矢量图(Vector Image):无论怎样放大/缩小都不会出现锯齿。

使用Blend可以直接绘制XAML图像;Design可以像Photoshop或Fireworks那样绘制图形,再由设计者决定导出为png或XAML格式。

WPF的基本图形包括以下几个(都是Shape类的派生类):

1)Line:可以设置笔触(Stroke);

2)Rectangle:既有笔触,又有填充(Fill);

3)Ellipse:笔触+填充;

4)Polygon:多边形,笔触+填充;

5)Polyline:折线(不闭合),由多条首尾相接的直线段组成;

6)Path:路径(闭合区域)

绘图比一定要在Canvas中完成,可在任何一种布局控件中完成,常用的绘图容器:Canvas,Grid。

WPF的绘图系统中包含非常丰富的Brush类型(抽象类),常用的由:

i)SolidColorBrush;

ii)LinearGradientBrush:线性渐变画刷。色彩沿设定的直线方向,按设定的变化点进行渐变;

iii)RadialGradientBrush:径向渐变画刷;

iv)ImageBrush:使用图片作为填充内容;

v)DrawingBrush:使用矢量图(Vector)和位图(Bitmap)作为填充内容;

vi)VisualBrush:形象填充。

Path的Data属性是Geometry类,但Geometry类是个抽象类,所以不能使用在XAML中直接使用<Geometry>标签。Geometry子类包括:LineGeometry,RectangleGeometry,EllipseGeometry,PathGeometry,StreamGeometry,CombineGeometry,GeometryGroup。

线段都是没有起点(StartPoint),因为起点就是前一个线段的终点,而第一个线段的起点则是PathFigure的StartPoint。

使用路径标记语法绘图时一般分为三步:移动至起点-》绘图-》闭合图形。语法不区分大小写。


滤镜插件:UIElement类的Effect属性,后者位于System.Windows.Media.Effects名称空间中,它的派生类有:Blureffect,DropShadowEffect,ShaderEffect。

控制变形的属性有两个,分别是:

i)RenderTransform:呈现变形,定义在UiElement类中;

ii)LayoutTransform:布局变形,定义在FrameworkElement类中。

Transform类的派生类实例均可用来为这两个属性赋值。Transform抽象类的派生类有:

a)MatrixTransform:矩形变形;

b)RoateTransform:旋转变形;

c)ScaleTransform:坐标系变形;

d)SkewTransform:拉伸变形;

e)TranslateTransform:偏移变形;

f)TransformGroup:变形组。

呈现变形只改变元素“出现在哪里”,所以不牵扯布局的改变,只涉及窗体的重绘,速度快--可以考虑制作动画。

布局变形一般只用在静态变形上,而不用于制作动画。


动画本质是在一个时间段内对象位置,角度,颜色,透明度等属性值的连续变化。WPF中可以用来制作动画的属性必须是依赖属性。

简单线性动画:仅有变化起点,变化终点,变化幅度,变化时间4个要素构成。



猜你喜欢

转载自blog.csdn.net/huan_126/article/details/80135016
今日推荐