• wpf---shape(一)


    1,Shape类---FrameworkElement,Rectangle,Ellipse,Line,Polyline,Polygon,path

       Fill---填充形状内部的画刷

      Stroke---绘制形状边缘的画刷

      StrokeThickness----边框的宽度,使用SnapToDevicePixels来设定是否边缘模糊.

      StrokeStartLineCap---StrokeEndLineCap---设定Line,PolyLine,某些情况下的Path的两端

               Round:线宽半圆

               Triangle:线宽三角形

                Rectangle:线宽一半的长方形.

    StrokeDashArray,StrokeDashOffset,StrokeDashCap---创建形状点画线边框.

           StrokeDashArray=”X Y Z” 代表 点画线的长度= StrokeThickness*X, 空白=StrokeThickness*Y

           StrokeDashCap:点画线两端的修饰 和StrokeStartCap类似.

    StrokeLineJoin,StrokeMiterLimit---设置直线相交的形状

    Stretch:设定形状如何填充可用区域.

                    Fill:Shape.Width=Panel.Width;Shape.Height=Panel.Height

                    UniForm: Shape.Width=Shape.Height=Min(Panel.Width,Panel.Height)

                    UniFormToFill: Shape.Width=Shape.Height=Max(Panel.width,Panel.Height)

    image

    DefiningGeometry---为形状提供Geometry对象(相当于Graphic).

    GeometryTransForm---为形状提供坐标系统的变换

    RenderedGeometry---为形状提供渲染好的Geometry对象

    2,适合放置Shape的容器:Grid和Canvas,StackPanel,DockPanel和WrapPanel不适合放置.

    3,可自动改变大小的Shape的控件:Viewbox

    二,Line,PolyLine,PolyGon----

    Line 使用 X1,Y1 X2,Y2来设定坐标

    PolyLIne和Polygon使用Points集合来设定坐标.当在Canvas之中,Canvas.Left和Canvas.Top就是坐标的原点.

    如何确定填充区域:规则1 设定 FillRule=OddEven 标识 形状到外面的路径是1时则填充,到外面路径是2时则不填充.

                             规则2 设定 FillRule=NonZero,标识形状到外面的路径上的直线方向,从左到右则+1,从又到左则减1,如果和不为0,则为内部,和为0则为外部.


    直线的线帽和焦点.

    三,点画线的动画效果---模拟流水,利用Timer定时器.

      private static Timer _timer1;
            public Window1()
            {
                InitializeComponent();
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                Timer timer = new Timer(AnimateAct, null, 20, 1000);
                //_timer1 = timer;
            }
    
            private void AnimateAct(object state)
            {
                Polyline1.Dispatcher.Invoke(() =>
                {
                    if (Polyline1.StrokeDashOffset >= 4) Polyline1.StrokeDashOffset =0;
                    else
                        Polyline1.StrokeDashOffset++;
                });
    
            }
    
            ~Window1()
            {
                if(_timer1!=null)
                _timer1.Dispose();
            }
    /

    /注意其中的Dispatcher.Invoke进行交互的方法.


    四,画刷

    LinearGradientBrush

     <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                         <GradientStop Color="#E4E0E0" Offset="0"/>
                         <GradientStop Color="#507F7A7A" Offset="0.35"/>
                         <GradientStop Color="#507F7A7A" Offset="0.65"/>
                         <GradientStop Color="#E4E0E0" Offset="1"/>
                     </LinearGradientBrush>

       StartPoint 和 StopPoint 定义渐变颜色的区域

        GradientStop:定义每个颜色点上面的颜色.

    RadialGradientBrush

     <RadialGradientBrush Center="0.5 0.5">
                        <GradientStop Color="AliceBlue"/>
                        <GradientStop Color="#FF1A4B76" Offset="0.982"/>
                    </RadialGradientBrush>

    image

    ImageBrush

    <Border.Background>
                    <ImageBrush ImageSource="pack://application:,,,/MxbResource;component/sadface.jpg" Stretch="Uniform " Viewbox="0,0 1,1">
    
                    </ImageBrush>

               image    


    注意 :ViewBox的效果 ;ViewBox 可以截取 图片的一部分.然后配合Uniform来进行一个放大和缩小的效果.

    注意:获取别的程序集里面资源的方式:pack:指令

  • 相关阅读:
    11.2---字符串数组排序,删除变位词(CC150)
    9.10---堆箱子问题(CC150)
    9.9---n皇后问题(CC150)
    11.1---有序数组合并(CC150)
    9.8---硬币问题(CC150)
    7.7---找只含3,5,7的数(CC150)
    17.1---编写一个函数交换两个变量的值(CC150)
    7.6--找过点最多的直线(CC150)
    7.5---两个正方形分成对半的直线(CC150)
    9.5---括号是否有效(CC150)
  • 原文地址:https://www.cnblogs.com/frogkiller/p/12954570.html
Copyright © 2020-2023  润新知