zoukankan      html  css  js  c++  java
  • 【WP7】坐标变换

    在应用开发的过程中,有时需要使用到坐标变换(平移,旋转,缩放,三维变换等),WP7提供了一下几种坐标变换的方式

      TranslateTransform    平移

      RotateTransform     旋转

      ScaleTransform      缩放

      SkewTransform      倾斜

      CompositeTransform   组合变换

      TranformGroup      变换组

      MatriTransform      矩阵变换

      看例子再解释

             <Image Source="img.png" Height="291" HorizontalAlignment="Left" Margin="-523,-89,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="313" >
                <Image.RenderTransform>
                    <TransformGroup>
                        <TranslateTransform X="100" Y="100" />
                        <RotateTransform Angle="5" />
                        <ScaleTransform CenterX="180" CenterY="0" ScaleX="0.5" ScaleY="1"/>
                        <SkewTransform AngleX="10" CenterY="10" CenterX="0" CenterY="90" />
                        <CompositeTransform CenterX="250" CenterY="185"  
                        Rotation="45"  
                        SkewX="15" SkewY="15"  
                        ScaleX="1.2" ScaleY="1.2"  
                        TranslateX="230" TranslateY="200"/>
                        <MatrixTransform Matrix="2,0,0,1,12,6"/>
                    </TransformGroup>
                </Image.RenderTransform>
            </Image>

      首先定义一个Image控件,在Image里面定义RenderTransform (只能包含一种变换,如果需要使用多种变换,可以使用TransformGroup

      其他应该一看就懂,没什么好解释的,不懂多试几次就会明白,下面介绍一下MatrixTransform    

        这是最复杂的一种变换,它是一个3乘3的矩阵,但是,由于它第3列为0,0,1,所以,其实我们只需设置6个值就够了。它们分别是:

               m11       m12     0
               m21       m22     0
               offsetX  offsetY  1

              m11 ——X轴缩放
              m12 ——Y轴上倾斜
              m21 ——X轴上倾斜
              m22——Y轴缩放
              offsetX ——X轴上的位移
              offsetY ——Y轴上的位移  

             <MatrixTransform Matrix="2,0,0,1,12,6"/>

        表示:X轴放大两倍,Y轴不变,在X轴方向平移12,Y轴方向平移6,无倾斜

      

    最后是三维变换,直接看例子和截图  

            <Image Source="img.png" Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center" Width="320">
                <Image.Projection>
                    <PlaneProjection RotationY="45" />
                </Image.Projection>
            </Image>

    为了更好的看出效果,这里只设置了Y轴旋转,也可以设置RotationX,RotationZ,大家自己试吧

    最后,还有C#代码中控制坐标变换的,首先在控件定义时添加RenderTransform

            <Rectangle Height="100" HorizontalAlignment="Left" Margin="91,46,0,0" Name="rectangle1" Stroke="Black" StrokeThickness="1" VerticalAlignment="Top" Width="200" Fill="Red">
                <Rectangle.RenderTransform>
                    <TranslateTransform/>
                </Rectangle.RenderTransform>
            </Rectangle>

    在代码中访问该变换,设置平移变换的X值为200

            TranslateTransform translate = (TranslateTransform)this.rectangle1.RenderTransform;
            translate.X = 200;

      

  • 相关阅读:
    Spring MVC与JAX-RS比较与分析
    JDK历史版本下载
    第六篇:为多态基类声明虚析构函数
    第五篇:明确拒绝不想编译器自动生成的拷贝构造函数和赋值运算符重载函数
    第四篇:了解 C++ 默默编写并调用的函数
    第三篇:确保对象在被使用前的初始化
    poj 2125(最小割)
    hdu 4704(费马小定理)
    hdu 4705(树形DP)
    poj 3469(网络流模版)
  • 原文地址:https://www.cnblogs.com/bomo/p/2756409.html
Copyright © 2011-2022 走看看