精华内容
下载资源
问答
  • 先做个声明:这里绑定都在前台实现,至于后台怎么写,那比前台简单多了,但更常用的是xaml中绑定。我们分析下最简单的字符串绑定来弄清楚原理,其他的类推就是。 数据绑定主要是要弄清楚两个东西,一个是源Source,...

    先做个声明:这里绑定都在前台实现,至于后台怎么写,那比前台简单多了,但更常用的是xaml中绑定。我们分析下最简单的字符串绑定来弄清楚原理,其他的类推就是。

    数据绑定主要是要弄清楚两个东西,一个是源Source,一个是路径Path。

    什么能够作为源Source呢:

    CLR类型的单个对象

    CLR类型的集合对象

    DataTable和DataView

    XML数据

    依赖对象

    FrameworkElement的DataContext

    控件及ElementName

    假如现在有一个最简单的需求:有一个窗口MainWindow,它里面有一个文本框(TextBox),Name为textBox,文本框的内容(Text)要绑定一个字符串。

    好了,现在我们要考虑一个上面需求没提到的问题,该字符串是哪的字符串?

    1.另外一个类Student(含公开属性Name)的实例化对象对应的Name

    在哪实例化这个类Student呢?

    • 在MainWindow.xaml.cs里,对不起,即使实例化了,xaml里无法直接访问cs里的实例化的对象。
    • 在xaml里实例化,有个不错的选择就是通过声明资源(Resource)
     1 <Grid>
     2         <Grid.Resources>
     3             <local:Student x:Key="stu" StuName="张三"/>
     4         </Grid.Resources>
     5         <TextBox Name="textBox"
     6                  Width="150"
     7                  Height="23"
     8                  BorderBrush="Black" 
     9                  Text="{Binding Source={StaticResource stu},Path=StuName}"/>
    10 </Grid>

    这种方法测试是可行的。

     

    • 那如果通过数据上下文DataContext的方式呢,怎么写

    DataContext只要存在于要绑定的控件的本身或者其逻辑树父级以上就可以,我们还是定义在Grid上吧

     1 <Grid Name="grid">
     2         <Grid.DataContext>
     3             <local:Student StuName="李四"/>
     4         </Grid.DataContext>
     5         <TextBox Name="textBox"
     6                  Width="150"
     7                  Height="23"
     8                  BorderBrush="Black" 
     9                  Text="{Binding Path=StuName}"/>
    10 </Grid>

    这种方法测试也是可行的。

     

     

    2.如果该字符串存在于当前页面,是当前页面的一个公开属性呢

     1 public partial class MainWindow : Window
     2     {
     3         public MainWindow()
     4         {
     5             InitializeComponent();
     6         }
     7         private string str;
     8 
     9         public string Str
    10         {
    11             get
    12             {
    13                 return str;
    14             }
    15 
    16             set
    17             {
    18                 str = value;
    19             }
    20         }
    21     }
    • 我们先尝试用资源实例化
     1 <Window.Resources>
     2         <local:MainWindow x:Key="str" Str="王五" />
     3     </Window.Resources>
     4     <Grid Name="grid">
     5         <TextBox Name="textBox"
     6                  Width="150"
     7                  Height="23"
     8                  BorderBrush="Black"
     9                  Text="{Binding Source={StaticResource str}, Path=Str}" />
    10 </Grid>

    启动的时候报错了:

    原因是资源不允许嵌套,就是说页面定义的资源不能是本身的实例。

    • 再试试DataContext
     1 <Grid Name="grid">
     2         <Grid.DataContext>
     3             <local:MainWindow Str="王五" />
     4         </Grid.DataContext>
     5         <TextBox Name="textBox"
     6                  Width="150"
     7                  Height="23"
     8                  BorderBrush="Black"
     9                  Text="{Binding Path=Str}" />
    10 </Grid>

    跟上面报了相同的错,看来数据上下文也不能指定为自己的实例。

    • 那就没招了吗?有的,直接将整个窗口(它也是FrameworkElement)作为Source,通过指定ElementName的方式
     1 <Window x:Class="Binding.MainWindow"
     2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     5         xmlns:local="clr-namespace:Binding"
     6         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     7         Title="MainWindow"
     8         Width="525"
     9         Height="350"
    10         mc:Ignorable="d"
    11         Name="this">
    12     <Grid Name="grid">
    13         <TextBox Name="textBox"
    14                  Width="150"
    15                  Height="23"
    16                  BorderBrush="Black"
    17                  Text="{Binding ElementName=this, Path=Str}" />
    18     </Grid>
    19 </Window>

    我们需要在cs里对Str赋值,否则绑定的是Str的默认值,这块我们这样理解,ElementName指定自己,那么就是实例化了一个MainWindow,它里面的属性都是取的默认值。

    我们在构造里写 Str=“ZHAOLIU”,发现运行的文本框仍然为空,这是因为我们赋值是在界面初始化语句InitializeComponent();之后,

    我们的属性又不具备更改通知功能,所以改变了值也不会起作用。下面我们就改造为可更改通知的。只需要继承接口INotifyPropertyChanged并实现他的约束就可以了。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Linq;
     5 using System.Text;
     6 using System.Threading.Tasks;
     7 using System.Windows;
     8 using System.Windows.Controls;
     9 using System.Windows.Data;
    10 using System.Windows.Documents;
    11 using System.Windows.Input;
    12 using System.Windows.Media;
    13 using System.Windows.Media.Imaging;
    14 using System.Windows.Navigation;
    15 using System.Windows.Shapes;
    16 
    17 namespace Binding
    18 {
    19     /// <summary>
    20     /// MainWindow.xaml 的交互逻辑
    21     /// </summary>
    22     public partial class MainWindow : Window, INotifyPropertyChanged
    23     {
    24         public MainWindow()
    25         {
    26             InitializeComponent();
    27             Str = "ZHAOLIU";
    28         }
    29         private string str;
    30 
    31         public event PropertyChangedEventHandler PropertyChanged;
    32 
    33         public string Str
    34         {
    35             get
    36             {
    37                 return str;
    38             }
    39 
    40             set
    41             {
    42                 str = value;
    43                 if (PropertyChanged != null)
    44                 {
    45                     PropertyChanged(this, new PropertyChangedEventArgs("Str"));
    46                 }
    47             }
    48         }
    49     }
    50 }

     经过测试是可以的。

     

     

    3.如果字符串存在于另一个窗口,是其一个公开属性呢

    我们再新建个窗口Window1

     1 public partial class Window1 : Window
     2     {
     3         public Window1()
     4         {
     5             InitializeComponent();
     6         }
     7         private string str;
     8 
     9         public string Str
    10         {
    11             get
    12             {
    13                 return str;
    14             }
    15 
    16             set
    17             {
    18                 str = value;
    19             }
    20         }
    21     }

    然后我们在MainWindow里实例化Window1试试

     1 <Window.Resources>
     2         <local:Window1 x:Key="str" Str="王五" />
     3     </Window.Resources>
     4     <Grid Name="grid">
     5         <TextBox Name="textBox"
     6                  Width="150"
     7                  Height="23"
     8                  BorderBrush="Black"
     9                  Text="{Binding Source={StaticResource str}, Path=Str}" />
    10 </Grid>

    这是可以的。至此我们知道,资源中实例化一个对象,控件去绑定该对象的公开属性,只要一条,该对象不能是自己本身就ok。

     

    使用DataContext也是可以的

     1 <Window.DataContext>
     2         <local:Window1 Str="麻子"/>
     3     </Window.DataContext>
     4     <Grid Name="grid">
     5         <TextBox Name="textBox"
     6                  Width="150"
     7                  Height="23"
     8                  BorderBrush="Black"
     9                  Text="{Binding Path=Str}" />
    10 </Grid>

    ElementName呢,MainWindow拿不到Window1里的控件,就算你给Window1给了个名字,在MainWindow也不能以字符串直接拿到,不知道你们有没有见过将控件的值绑定到另一个页面的一个控件上的。

     

    总结下: 

     

     

     

     

     

     

     

     

     

    转载于:https://www.cnblogs.com/zhangyongheng/p/6957995.html

    展开全文
  • WPF xaml 资源引入

    千次阅读 2018-04-13 10:24:54
    &lt;UserControl x:Class="HomeDecorationPSD.Presentation.Views.UiWindow" xmlns="... xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml...
    <UserControl
    
        x:Class="HomeDecorationPSD.Presentation.Views.UiWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:local="clr-namespace:HomeDecorationPSD.Presentation.Views"
        mc:Ignorable="d"
        xmlns:system="clr-namespace:System;assembly=mscorlib"       
        >
        <!-- 引入多份资源 -->
        <UserControl.Resources>
            <ResourceDictionary><!-- 重点:需要使用这个标签来包含多个内容 -->
                <!-- 资源1:来自系统类 -->
                <system:Double x:Key="TabItemWidth">80</system:Double>
                <!-- 资源2:字典类的资源 -->
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="/Presentation/Resources/ColorResources.xaml"></ResourceDictionary><!-- 项目工程的相对路径 -->
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </UserControl.Resources>




        <!-- 接下来使用资源 -->




    </UserControl>
    展开全文
  • C#WPF XAML 绘图、画笔、特效 一、绘图 I.绘图有两种方式:形状绘图和几何绘图。 1.(1)、形状(Shape)是一个2D绘图类,位于System.Windows.Shape空间内。 2.包含最常用的绘图对象:Line(直线)、Rectangle(矩形)、...

    C#WPF XAML 绘图、画笔、特效

    一、绘图
    I.绘图有两种方式:形状绘图和几何绘图。
    1.(1)、形状(Shape)是一个2D绘图类,位于System.Windows.Shape空间内。
    2.包含最常用的绘图对象:Line(直线)、Rectangle(矩形)、Ellipse(椭圆)、Polygon(多边形)、Path(路径)。
    (1)、图形对象共有属性:Stroke(如何使用绘制图形的轮廓,既所使用的画刷)、StrokeThickness(图形轮廓的粗细)、Fill(绘制图形的内部)。
    (2)、指定图形的坐标位置和顶点的数据属性,以与设备无关的像素来度量。
    在这里插入图片描述
    (3)、直线是最简单的图形。使用X1、Y1两个属性可以设置它的起点坐标,X2、Y2两个属性则用来设置其终点坐标。控制起点/终点坐标就可以实现平行、交错等效果。
    (4)、Stroke(笔触)属性的数据类型是Brush(画刷),凡是Brush的派生类均可用于给这个属性赋值。因为WPF提供了多种渐变色画刷,所以画直线也可以画出渐变效果。同时,Line 的一些属性还帮助我们画出虚线以及控制线段终点的形状。下面的例子综合了这些属性。
    (5)、Y2控制向左倾斜,Y1控制向右倾斜,“StrokeDashArray”控制虚线密度,StrokeEndLineCap直线结束形状与StrokeStartLineCap直线开始形状:Flat(矩形)、Round(圆形)、Square(矩形)、Triangle(尖头形状)。
    在这里插入图片描述
    3.Rectangle(矩形)
    (1)、矩形由笔触(Stroke,即边线)和填充(Fill)构成。Stroke属性的设置与Lin一
    样,Fill属性的数据类型是Brush。Brush是个抽象类,所以我们不可能拿一个Brush类的实例为Fill属性赋值而只能用Brush派生类的实例进行赋值。WPF的绘图系统包含非常丰富的Brush类型。
    (2)、SolidColorBrush:实心画刷。在XAML中可以使用颜色名称字符串(如Red、Blue)
    直接赋值。
    (3)、RadiusX="30"和RadiusY="100"是设置圆角效果。
    在这里插入图片描述
    (4)、LinearGradientBrush:线性渐变画刷。色彩沿设定的直线方向、按设定的变化点进
    行渐变。
    (5)、RadialGradientBrush:径向渐变画刷。色彩沿半径的方向、按设定的变化点进行渐
    变,形成圆形填充。
    (6)、 线性渐变:StartPoint=“0,0” EndPoint="1,1"起点为左上角终点为右下角,
    (0,0 1,0)起点为左上角终点为左下角、(0,0 1,0,5)起点为左上角终点为右边一半。
    在这里插入图片描述
    (7)、ImageBrush:使用图片(Image)作为填充内容。
    (8)、DrawingBrush:使用矢量图(Vector)和位图(Bitmap)作为填充内容。
    Viewport:设置平铺的范围、TileMode:设置平铺的方式(Absolute绝对平铺、RelativeToBoundingBox相对平铺)。
    (9)、ViewportUnits:设置平铺的相对/绝对坐标,即图片在哪平铺,Viewport=“0, 0, 0.5, 0.5” 表示要平铺图片在矩形框的位置,(0,0)代表起点坐标,(0.5,0.5)代表重点坐标。
    (10)、VisualBrush:WPF中的每个控件都是由FrameworkElement类派生来的,而
    (11)、FrameworkElement又是由Visual类的方法获得。获得这个可视化的形象后,我们可以用这个形象进行填充,这就是VisualBrush。比如当我想把窗体上的某个控件拖拽
    到另一个位置,当鼠标松开之前需要在鼠标指针下显示一个控件的“幻影”,这个“幻
    影”就是用VisualBrush填充出来的一个矩形,并让矩形捕捉鼠标的位置、随鼠标移动。
    在这里插入图片描述
    3.Ellipse(椭圆)
    椭圆也是一种常见的几何图形,它的使用方法与矩形没有什么区别。下面的例子是绘
    制一个球体,球体的轮廓是正圆(Circle),Width与Height相等的椭圆即是正圆;球体的
    光影效果使用径向渐变实现。
    在这里插入图片描述在这里插入图片描述
    4.Polygon(多边形)
    使用“Polygon”定义多边形,多边形是一个闭合体,“Points”属性设置边前面数值要和后面的数值保持一致才能形成闭合体。
    在这里插入图片描述
    使用“Polyline”定义多线形,多线形不是闭合体,
    在这里插入图片描述
    5.Path(路径)
    (1)、Path类可以绘制曲线和复杂的形状。
    (2)、Data属性使用了mini-language(路径标记语法)。
    (3)、路径(Path)可以说是WPF绘图中最强大的工具,一来是因为它完全可以替代其他
    几种图形,二来它可以将直线、圆弧、贝斯二曲线等基本元素结合进来,形成更复杂的
    图形。路径最重要的一个属性是Data,Data的数据类型是Geometry(几何图形),我们
    正是使用这个属性将一些基本的线段拼接起来、形成复杂的图形。
    (4)、为Data属性赋值的语法有两种:一种是标签式的标准语法,另一种是专门用户绘制几何图形的“路径标记语法”。借助标准语法认识各种基本线段,和学习绘制几何图形的路径标记语法。
    (5)、想要使用Path绘制图形,首先要知道几何图形数据是如何组合在Data属性中的。Path的Data属性是Geometry类,但Geometry类是个抽象类,所以我们不可能在XAML中直接使用标签。
    (6)、我们可以使用的是Geometry的子类。Geometry子类包括:
    LineGeometry:直线几何图形。
    RectangleGeometry:矩形几何图形。
    EllipseGeometry:椭圆几何图形。
    PathGeometry:路径几何图形。
    StreamGeometry:PathGeometry的轻量级替代品,不支持Binding、动画等功能。
    CombinedGeometry:由多个基本几何图形联合在一起,形成的单一几何图形。
    GeometryGruop:由多个基本几何图形组成在一起,形成的几何图形组。
    II.几何绘图
    1.(1)、几何绘图与图形绘图的区别:图形对象可以独立存在的,可以独立绘制出具体需要的图形、几何图形对象没有具体的形体,它需要依赖于某一对象元素而存在,不能直接呈现在画板上。
    (2)、几何绘图包括5种对象:LineGeometry(确定两点绘制一条直线)、RectangleGeometry(绘制矩形的几何图形)、EllipseGeometry(绘制椭圆形的几何图形)、GeometryGroup(组合几何对象,将多个单一的几何对象组合成一个几何对象)、PathGeometry(路径几何对象)。
    (3)、LineGeometry(确定两点绘制一条直线),StartPoint(起点)EndPoint(终点)。
    在这里插入图片描述
    (4)、RectangleGeometry(绘制矩形的几何图形),RadiusX(控制圆角) RadiusY(控制圆形)。
    在这里插入图片描述
    (5)、EllipseGeometry(绘制椭圆形的几何图形),RadiusX(控制垂直方向)RadiusY(控制水平方向)。
    在这里插入图片描述
    2.、Path可以用这些形状绘制:
    (1)、ArcSegment 类 表示两点之间的一条椭圆弧,用来绘制圆弧的五个属性。
    ①.Point属性用来指明圆弧连接的终点;
    ②.圆弧截取自椭圆,Size属性即是完整椭圆的横轴半径和纵轴半径;
    ③.SweepDirection属性指明圆弧是顺时针方向还是逆时针方向;如果椭圆上的两点位置不对称,那么这两点的圆弧就会分为大弧和小弧,IsLargeArc 属性用于指明是否使用大弧去连接;
    ④.RotationAngle属性用来指明圆弧母椭圆的旋转角度。
    (2)、BezierSegment(三次方贝塞尔曲线)类表示在两个点之间绘制的一条三次贝塞尔曲线,由4个点决定:
    ①.起点:即前一个线段的终点或PathFigure的StartPoint。
    ②.终点:Point3属性,即曲线的终点位置。
    ③.两个控制点:Point1和Point2属性。
    ④.三次方贝塞尔曲线就是由起点出发走向Point1的方向,再走向Point2的方
    向,最后到达终点的平滑曲线。
    在这里插入图片描述
    (3)、LineSegment 类 在PathFigure中的两个点之间创建一条直线。
    在这里插入图片描述
    (4)、PolyBezierSegment 类 表示一条或多条三次方贝塞尔曲线。
    (5)、PolyLineSegment 类 表示由PointCollection 定义的线段集合,每个Point指
    线段的终点。
    (6)、PolyQuadraticBezierSegment 类 表示一系列二次贝塞尔线段。
    (7)、QuadraticBezierSegment(二次贝塞尔曲线段)类,在PathFigure的两点之间创建一条二次贝塞尔曲线,与BezierSegment类似,只是控制点由两个减少为一个。也就是说,QuadraticBezierSegment 由三个点决定:
    ①.起点:即前一个线段的终点或PathFigure的StartPoint。
    ②.终点:Point2属性,即曲线的终点位置。
    ③.一个控制点:Point1。
    在这里插入图片描述
    (8)、GeometryGruop也是Geometry的一个派生类,它最大的特点是可以将一组PathGeometry组合在一起。
    (9)、 缺点:其标签式语法的烦琐,一般情况下,复杂图形(Path)都是由数十条线段
    连接而成,按照标签式语法,每条线段(Segment)是一个标签、每个标签占据一行,
    一个图形就要占去几十行代码,而这仅仅是一个图形,要组成一个完整的图画往往需要
    十多个图形组合在一起,有可能占据数百行代码,借助专供WPF绘图使用的路径标记语法(Path Markup Syntax)来极大地简化Path的描述。
    在这里插入图片描述
    III、路径标记语法 (Path Markup Syntax)
    1.移动命令:指定startPoint(绘图的起始点),用“M”或“m”表示,使用M时,表示绝对值,使用m时,表示相当于前一定的偏移值。
    2.绘制命令:一个指令集合,用来描述外形轮廓的内容,包含大部分的直线和曲线的绘图指令,包括L、H、V、A、C、Q等。
    3.关闭命令:作用是结束当前的画图,用来闭合整个Path,并在当前点和图形的起点之间画一条线段,使用字母“z”来表示,最后一条线段的终点与第一条线段的起点间会连接上一条直线段。
    4.线段的简记法:可以简写为“L 150,5”,这个L就是路径标记语法的一个“绘图命令”,“H 180”就是指从当前点画一条水平直线,终点的横坐标是180(你不需要考虑纵坐标,它与当前点的纵坐标一 致)。类似地还有V命令,用来画竖直直线。
    5.使用“Visual Studio 2015”自带的设计器“Blend for Visual Studio 2015”Path命令绘制自己喜欢的图形。
    在这里插入图片描述
    (1)、打开“Blend for Visual Studio 2015”新建WPF应用程序,创建的项目和WPF窗口基本一致,“对象和时间线”窗口是实时显示页面控件层级的窗口。
    在这里插入图片描述
    (2)、进行绘图,如果想要绘图自己喜欢的人物图形但又不会画的时候,可以选择把想要的图片设置为背景图片,然后使用画笔对着图片绘制,其中“笔”是绘制直线的,“铅笔”是绘制曲线的。
    在这里插入图片描述
    二、画笔
    I、画刷(使用Blend for Visual Studio 2015)
    1.画刷定义:
    (1)、所有的UI元素都可以通过画刷的设置而改变它们的风格。
    (2)、使用不同的画刷对目标区域进行“绘制”,会有不同的效果。
    (3)、种类:SolidColorBrush(单色实心画刷)、LinearGradientBrush(线性渐变画刷)、RadialGradientBrush(径向渐变画刷Win8应用中不支持)、ImageBrush(图片画刷)。

    2.(1)、SolidColorBrush(单色实心画刷)SolidColorBrush使用纯色绘制区域 Color 。可以通过多种方式指定的 Color ,SolidColorBrush :例如,可以指定其 alpha、红色、蓝色和绿色通道,或使用类提供的预定义颜色之一 Colors 。
    ①.后台写法,实际上就是给“Grid”设置一个“Children”属性。
    在这里插入图片描述
    在这里插入图片描述
    (2)、LinearGradientBrush(线性渐变画刷)LinearGradientBrush使用线性渐变绘制区域。 线性渐变在线条(渐变轴)中混合了两种或多种颜色。 使用 GradientStop 对象可以指定渐变中的颜色及其位置。
    (3)、RadialGradientBrush(径向渐变画刷Win8应用中不支持)RadialGradientBrush使用径向渐变绘制区域。 径向渐变跨一个圆混合两种或多种颜色,与类一样 LinearGradientBrush ,可以使用 GradientStop 对象指定渐变中的颜色及其位置。
    (4)、ImageBrush(图片画刷)ImageBrush使用绘制区域 ImageSource 。
    ①.如果直接引用资源管理器里的图片文件夹的时候会报错,因为系统引用的是整个项目的文件夹,所以需要把图片文件夹放在项目文件夹bin–>Debug里才能引用。
    在这里插入图片描述
    三、图像处理
    1.图像处理三种属性:拉伸图像(通过设置Stretch属性实现图像的拉伸)、裁切图像(通过设置Clip属性裁切图像)、使用图像输入文字(ImageBrush)元素实现使用图像输入文字。
    (1)、Imdge元素的Stretch属性值类型为枚举型,属性值分别为:原始尺寸(None)、填充拉伸(Fill)、等比拉伸(Uniform)、等比拉伸填充(UniformToFill)。
    在这里插入图片描述
    (2)、裁切图像(通过设置Clip属性裁切图像),Width和Height值越大裁切的内容越小。
    在这里插入图片描述
    (3)、使用图像输入文字(ImageBrush)元素实现使用图像输入文字。FontStyle设置字体样式有三个属性:Italic(字体倾斜)、Normal(字体正常)、Oblique(字体倾斜)。
    在这里插入图片描述
    (4)、Opacity设置图片的透明度/毛玻璃效果。
    在这里插入图片描述
    四、RenderTransform特效(变形)
    I、 RenderTransform类:包含的变形属性成员,专门用来改变Silverlight对象形状的实现对元素拉伸、旋转、扭曲等效果,同时变形特效也常用于辅助产生各种动画效果。
    1.RenderTransform类:
    (1)、TranslateTransform:能够让某对象的位置发生平移变化。
    (2)、RotateTransform:能够让某对象产生旋转变化,根据中心点进行顺时针旋转或逆时针旋转。
    (3)、ScaleTransform:能够让某对象产生缩放变化。
    (4)、SkewTransform:能够让某对象产生扭曲(斜角)变化。
    (5)、TransformGroup:变换集合,能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用(组合多个变换)。
    (6)、MatrixTransform:能够让某对象通过矩阵算法实现更为复杂的变形。
    变形元素包括平移变形、旋转变形、缩放变形、扭曲变形、矩阵变形和组合变形元素,
    变形特效常用于在不改变对象本身构成的情况下,使对象产生变形效果,所以变形元素
    常辅助产生Silverlight中的各种动画效果。
    2.(1)、 TranslateTransform(平移变化),包含X、Y 两种属性,以原来的对象为坐标原点(0,0),然后向X轴、Y轴进行平移变换。
    在这里插入图片描述
    (2)、RotateTransform((旋转变化),包括属性Angle(旋转角度),CenterX、CenterY(旋转的中心),负数为逆时针旋转,正数为顺时针旋转。
    在这里插入图片描述
    (3)、ScaleTransform:能够让某对象产生缩放变化,包括属性ScaleX、ScaleY、CenterX、CenterY,其中ScaleX、ScaleY属性表示对象在X、Y轴进行缩放的倍数,使用CenterX 和 CenterY属性指定一个中心点,ScaleX控制的是水平方向的缩放,ScaleY控制的是垂直方向的缩放。
    在这里插入图片描述
    (4)、SkewTransform:能够让某对象产生扭曲(斜角)变化,包括属性AngleX、AngleY、CenterX、CenterY。其中使用AngleX让元素相对X轴倾斜角度,AngleY是让元素围绕Y轴的倾斜角度。同样CenterX和CenterY是中心点位置。
    在这里插入图片描述
    (5)、TransformGroup:变换集合,能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用(组合多个变换),类似于在控件布局中的StackPanel内嵌的作用,是把多种变化元素组合成一种变化的容器。
    2.(1)、MatrixTransform是通过一种矩阵算法来进行运算得到相应的变形的效果的,在二维 x-y 平面中,使用3x3 矩阵进行变换,矩阵中第三列的值是固定不变的!最后一行中的成员 OffsetX OffsetY 表示转换值。方法和属性通常将变换矩阵指定为只有六个成员的矢量;成员如下:(M11, M12, M21, M22, OffsetX, OffsetY)。
    (2)、M11表示第一行第一列,m11:第一行和第一列相交处的值 Matrix,默认值为 1、M12:第一行和第二列相交处的值 Matrix,默认值为 0、M21:第二行和第一列相交处的值 Matrix,默认值为 0/M22:第二行和第二列相交处的值 Matrix,默认值为 1、offsetX:第三行和第一列相交处的值 Matrix,默认值为 0、offsetY:第三行和第二列相交处的值 Matrix,默认值为 0、以上六个属性值都是System.Double类型。

    展开全文
  • 添加图片到wpfxaml路径

    千次阅读 2014-11-28 18:27:38
    在工程下开一个文件夹Images 添加需要的图片 Icon="/Images/ic_app.ico

    在工程下开一个文件夹Images

    添加需要的图片

    <ImageBrush ImageSource="../Images/ic.png"/>


    Icon="/Images/ic_app.ico"

    展开全文
  • WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源。其中较为常见的情况是用Uri加载图像。 Uri表达式的一般形式为:协议+授权+路径 协议:pack:// 授权:有两种。一种用于访问编译时已经知道...
  • 这里稍微总结一下在XAML中使用相对路径添加图片的方法。 WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源。其中较为常见的情况是用Uri加载图像。Uri表 达式的一般形式为:协议+授权+路径 ...
  • WPF路径动画——XAML

    2012-08-23 17:08:00
    PageMain.xaml<Page x:Class="CnblogsDemo.PageMain" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmln...
  • WPF实现路径动画

    2019-12-17 16:13:53
    让目标沿着一条给定的路径移动,使用DoubleAnimationUsingPath类实现。实现如下。 点击鼠标移动 实现代码如下:界面XAML <Grid x:Name="LayoutRoot"> <Grid.Resources> <PathGeometry x:Key...
  • WPF 图片路径

    2018-07-03 08:57:22
    转载: http://www.cnblogs.com/sntetwt/p/5402098.html一、加载本项目的图片WPF引入了统一...Uri表达式的一般形式为:协议+授权+路径协议:pack://授权:有两种。一种用于访问编译时已经知道的文件,用application:/...
  • WPF 读取xaml文档

    2017-06-05 10:16:41
    /// /// MainWindow.xaml 的交互逻辑 /// public partial class MainWindow : Window { private Button myButton; public MainWindow() { InitializeComponent();
  • WPF资源路径

    千次阅读 2010-02-08 14:56:00
    在项目中增加两张图片... 在界面中增加两个Image控件ImgContent和ImgResource,在XAML中分别设置Source路径为Content.jpg和Resource.jpg。运行后ImgResource能正常显示图片,但是ImgContent控件无显示。将Content
  • WPF资源路径

    2009-08-23 17:21:00
    在项目中增加两张图片... 在界面中增加两个Image控件ImgContent和ImgResource,在XAML中分别设置Source路径为Content.jpg和Resource.jpg。运行后ImgResource能正常显示图片,但是ImgContent控件无显示。将Content
  • WPFXAML 笔记.1

    2019-04-18 08:16:54
    WPFXAML 用来开发用户界面 继承了XML的Tag,Attribute等语法 、在WPF中,XAML运行在CLR(公共语言运行库,指一种运行时环境,CLR是.NET Framework的主要执行引擎。和java虚拟机类似)之上,但它不编译为IL,而是...
  • WPF 资源路径设置

    2013-09-17 14:36:00
    今天使用WPF开发 开发中自定义控件 使用了图片 当 图片的宿主不是Image 的时候路径就会有点不对 留下 笔记 自用 Xaml 代码 <Border x:Name="b_button" MinHeight="60" MinWidth="60"> <Border....
  • 我们的图片存在于服务器上,我们修改图片就是获取原来的图片,删除原来的图片,然后,在新增新的图片,这样我们就需要使用delete函数,而且使用删除之前需要释放图片资源,往往我们在wpf中使用BitmapImage函数显示...
  • WPF资源路径详细概念详解

    千次阅读 2014-02-20 00:52:55
    我们在这篇文章中将会为大家详细介绍有关WPF资源路径的一些概念介绍。希望大家可以通过本文介绍的内容能加深对WPF的理解。 WPF名称范围各种概念解析 WPF多媒体各种功能详解 WPF动态资源使用方法介绍 WPF ...
  • WPF资源路径详细详解

    千次阅读 2011-10-24 11:32:41
    在项目中增加两张图片...在界面中增加两个Image控件ImgContent和ImgResource,在XAML中分别设置Source路径为Content.jpg和Resource.jpg。 运行后ImgResource能正常显示图片,但是ImgContent控件无显示。将Content.jp
  • WPFXAML介绍,XAML语法,元素嵌套申明,属性声明, 字符与属性之间的转换
  • WPFXAML命名空间映射

    千次阅读 2011-06-06 22:52:00
    本主题进一步解释每个可扩展应用程序标记...WPFXAML 命名空间声明 在许多可扩展应用程序标记语言 (XAML) 文件的根标记中的命名空间声明内,您都可以看到两个 xmlns 声明。第一个声明将整个 Windows Presentation
  • 转载自:...wpf path的c#写法,没有找到很多案例,对于很多需要代码去生成 路径点集合 的需求,可能还需要了解一下 path的c#写法。 xaml <Window x:Class="_1_5GraphicsWpf.Window3" xmlns=...
  • WPF中 PropertyPath XAML 语法 原文:WPF中 PropertyPath XAML 语法 PropertyPath 对象支持复杂的内联XAML语法用来设置各种各样的属性,这些属性把PropertyPath...
  • WPF路径绘图Path类用法

    千次阅读 多人点赞 2019-06-10 07:05:07
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowStartupLocation="CenterScreen" Title="Window3" Height="400" Width=...
  • 在使用相对路径加载图片时 <Grid.Background> <ImageBrush ImageSource="./示例图片.jpg"></ImageBrush> </Grid.Background> 图片必须先要添加到工程中,然后在图片属性中将Build ...
  • FileInfo作为文件路径的包装 然后调用函数FileStream以文件为主的 System.IO.Stream,既支持同步读写操作 ,也支持异步读写操作。 然后调用OpenWrite来写入文件 使用完成了使用Close来关闭文件流 private ...
  • 开发工具与关键技术:wpf 作者:龙文浩 撰写时间:2019年5月5日 下面我们使用OpenFileDialog来上传图片: OpenFileDialog //表示一个通用对话框,用户可以使用此对话框来指定一个或多个要打开的文件的文件名。 ...
  • WPF路径绘图之CombinedGeometry 效果如下: XMAL代码如下: <Window x:Class="Graphic_00.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,326
精华内容 1,730
关键字:

wpfxaml路径