第一章C#画图学习名称记录
基于WPF编程宝典学习画图功能
一、名词的记录
直线
Line
- 对于直线 FILL属性不可用,必须设置Stroke属性
折线
Polyline
-
从点5,100伸展到点15,200设置为线段 - StrokeDashArray=“2 1” StrokeDashArray=“5 0.2 3 0.2” 线段开始的位置
- StrokeDashOFFset 1:从0.5倍直线宽度长的空白开始
画刷
SoildColorBrush 背景颜色的画刷
- SoildColorBrush bru=new SoildColorBrush(Colors.Red)
- SoildColorBrush bru=new SoildColorBrush(Colors.FromRgb(R,G,B))
LinearGradientBrush RadialGradientBrush 渐变画刷
-为达到渐变效果:需要给每种颜色加上GradientStop
offset 0:放在开始渐变 1 放在结尾渐变
imageBrush画刷
viewbox :裁剪图像(实现放大镜功能)
平铺的imageBrush画刷
按比例平铺 按固定尺寸平铺
- Viewport:设置平铺的尺寸
- viewport=“0,0,32,32” 将每幅图像定义为32*32大小从左上角开始平铺
- ViewportUnits
- TileMode :复制的同时翻转图形
VisualBrush画刷
- 复制控件的样式,但是复制后的控件不能被点击也不能任何交互,只是复制了样式( 小窗口的预览功能)
BimapcacheBrush画刷
<Button Name="CMD">我是按钮</Button>
<Rectangle>
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=CMD}"></VisualBrush>
</Rectangle.Fill>
</Rectangle>
BitmapCacheBrush画刷
和VisualBrush画刷类似,BitmapCacheBrush要求显卡在显存种存储该内容,这样就能快速地重新绘制内容。但是其缺点也是很明显,第一次绘制也需要时间,一般用处不大
<Button Name="CMD">我是按钮</Button>
<Rectangle>
<Rectangle.Fill>
<BitmapCacheBrush Target="{Binding ElementName=CMD}"></BitmapCacheBrush>
</Rectangle.Fill>
</Rectangle>
变换
TranslateTransform
将坐标系统移动一定的距离,在不同的地方绘制相同的形状,
- X, Y
RotateTransform
旋转坐标系统 。正常绘制的形状绕着选择的中心点旋转
- Angele,CenterX,CenterY
- -所有的形状都支持RenderTransformOrigin属性。该属性使用相对坐标系统设置中心点,相对坐标系统在两个方向伤的范围都是从0-1.(0,0)为左上角(1,1为右下角)
- 所有的WPF都支持RenderTransformOrigin属性和RotateTransform属性和LayoutTransform属性(自动布局)
ScaleTransform
放大或缩小系统,绘制更大或更小的图形。可在X和Y方向设置不同的比例,实现拉伸或压缩的效果
- AngleX,AngleY,CenterX,CenterY
MatrixTransform
使用提供的矩阵的乘机修改坐标系统。
- Matrix
- 当使用TransformGroup执行一系列变换时,WPF将所有变换融合到单独的MatrixTransform变换中以确保最佳性能
TransformGroup
组合多个变化 ,但要注意变换的顺序
透明
- 设置元素的Opacity属性
- 设置画刷的Opacity属性
- 设置既有透明Alpha值的颜色,所有alpha值小于255都是半透明的
透明掩码
Opacity属性使元素的所有内容都是透明的,OpacityMask属性可使元素的特定区域透明或部分透明
- 形状逐渐褪色到完全透明
<Ellipse Width="120" Height="30" Fill="#CCC" Canvas.Left="45">
<Ellipse.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0" >
<GradientStop Offset="0" Color="Black"></GradientStop>
<GradientStop Offset="1" Color="Transparent"></GradientStop>
</LinearGradientBrush>
</Ellipse.OpacityMask>
</Ellipse>
- 实现类似水中镜像的效果
路径和几何图形
path
- path类能包含任何简单形状,多组形状以及复杂形状
- path类提供data属性,该属性接受一个Geometry对象,该对象定义路径包含一个或多个形状
- Geometry 是抽象类不能直接创建,需要通过以下的7个派生类中的一个进行创建
LineGeometry:代表直线,和几何图形Line类似
RectangleGeometry:代表矩形(可以具有圆形的拐角),和几何图形Rectangle类似
EllipseGeometry:代表椭圆,和几何图形Ellipse类似
CombinedGeometry:将两个几个图形合并成一个形状,可使用CombineMode属性选择如果组合两个几何图形
PathGeometry:代表更复杂的由弧线,曲线,直线构成的可闭合和不闭合的图形
StreamGeometry:相当于 PathGeometry的只读轻量级类,可节省内存,这类图形一旦被创建就不能再修改
GenmetryGroup 为单个路径添加任意多个Geomety对象,使用EvenOdd或NonZero填充规则来确定要填充的区域
PathGeometry绘制曲线和直线
每个PathGeometry对象都是又一个或多个PathFigure对象构建(存储在PathGeometry.Figures集合中)
重要属性
- StartPoint 从何处开始绘制图形线条
- Segments 用于绘制图形的PathSegment对象的集合
- IsClosed 是否连接起点和终点
- IsFilled 是否填充内部的区域
PathSegment类
- LineSegment :在两点直接绘制直线
- ArcSegment:在两点间创建椭圆形弧线
- BezierSement:在两点之间创建贝塞尔曲线
- QuadraticBezierSegment:创建形式更简单的贝塞尔曲线,只有一个控制点而不是两个控制点,计算速度更快
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。