zoukankan      html  css  js  c++  java
  • Wpf RotateTransform CenterX CenterY小结

     <Canvas>
            <!-- 原图 -->
            <Rectangle Stroke="Black" Width="100" Height="50" Canvas.Left="250" Canvas.Top="50" />

         

            <!-- 绕矩形左上角点(0, 0)点旋转,注意是矩形坐标系 -->
            <Rectangle Stroke="Green" Width="100" Height="50" Canvas.Left="250" Canvas.Top="50">
                <Rectangle.RenderTransform>
                    <RotateTransform Angle="90" CenterX="50" CenterY="25" />
                </Rectangle.RenderTransform>
            </Rectangle>

            <!-- 绕矩形中心点(50, 25)点旋转,注意是矩形坐标系 -->
            <Rectangle Stroke="Green" Width="100" Height="50" Canvas.Left="250" Canvas.Top="50">
                <Rectangle.RenderTransform>
                    <RotateTransform Angle="90" CenterX="50" CenterY="25" />
                </Rectangle.RenderTransform>
            </Rectangle>

            <!-- 绕矩形中心点(50, 150)点旋转,注意是矩形坐标系,也是Canvas坐标系的中心点(300, 225) -->
            <Rectangle Stroke="BlueViolet" Width="100" Height="50" Canvas.Left="250" Canvas.Top="50" RenderTransformOrigin="0,0">
                <Rectangle.RenderTransform>
                    <RotateTransform Angle="90" CenterX="50" CenterY="150" />
                </Rectangle.RenderTransform>
            </Rectangle>

            <Path Stroke="Black" StrokeThickness="4">
                <Path.Data>
                    <LineGeometry StartPoint="250,50" EndPoint="300,200"></LineGeometry>
                </Path.Data>
            </Path>
            <Ellipse Width="5" Height="5" Fill="Red" Canvas.Left="300" Canvas.Top="200"></Ellipse>
            <!-- 绕矩形中心点(50, 150)点旋转,注意是矩形坐标系,也是Canvas坐标系的中心点(300, 225) -->
            <Rectangle Stroke="GreenYellow" Width="100" Height="50" Canvas.Left="250" Canvas.Top="50">
                <Rectangle.RenderTransform>
                    <RotateTransform Angle="180" CenterX="50" CenterY="150" />
                </Rectangle.RenderTransform>
            </Rectangle>

            <!-- 绕矩形中心点(50, 150)点旋转,注意是矩形坐标系,也是Canvas坐标系的中心点(300, 225) -->
            <Rectangle Stroke="SaddleBrown" Width="100" Height="50" Canvas.Left="250" Canvas.Top="50">
                <Rectangle.RenderTransform>
                    <RotateTransform Angle="270" CenterX="50" CenterY="150" />
                </Rectangle.RenderTransform>
            </Rectangle>
        </Canvas>

     

    如图,如果Rectangle的RenderTransformOrigin="0,0" CenterX=50 CenteY=150就是围绕着红点为中心,黄线为半径将黄线另一头的点选择相应的角度,如果RenderTransformOrigin!="0,0"则则以红点和RenderTransformOrigin连起来的线为半径旋转相应的角度 (注意RenderTransformOrigin="0,0" CenterX=50 CenteY=150的点的位置都是相对于其所在的Rectangle 的)

    <Rectangle Stroke="Black" Width="50" Height="50">
               
            </Rectangle>
            <Rectangle Stroke="Black" Width="50" Height="50">
                <Rectangle.RenderTransform>
                    <TransformGroup>
                        <RotateTransform Angle="10" CenterX="50" CenterY="50"></RotateTransform>
                    </TransformGroup>
                </Rectangle.RenderTransform>
            </Rectangle>
            <Rectangle x:Name="test" Stroke="Black" Width="50" Height="50">
                <Rectangle.RenderTransform>
                    <TransformGroup>
                        <TranslateTransform X="50"></TranslateTransform>
                        <RotateTransform Angle="10" CenterX="50" CenterY="50"></RotateTransform>
                    </TransformGroup>
                </Rectangle.RenderTransform>
            </Rectangle>

    由这个例子中test矩形得知无论 

     <TranslateTransform X="50"></TranslateTransform>如何设置CenterX和CenterY都是以没改变前的图为标准的

    其实不管CenterX Center如何设置,几何图形旋转的角度都一样的,只是旋转后的位置不同

  • 相关阅读:
    为了抓包某APP所做的尝试(to be continued)
    VirtualBox的使用的一些Tips 网络配置|硬盘扩充
    斜线和反斜线简要历史,为什么windows和unix采用不同的路径分隔符
    求出二维数组主对角线、次对角线以及周边元素之和
    C#计算两个时间的时间差,精确到年月日时分秒
    C#获取MP3,WMA信息
    C#窗体随意移动
    DEV GridControl小结
    DEV 皮肤的使用
    C#窗体阴影
  • 原文地址:https://www.cnblogs.com/cappuccino/p/2586616.html
Copyright © 2011-2022 走看看