来自《深入浅出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个要素构成。