基于WPF编程宝典学习画图功能1

第一章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提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值