|
RotateTransform旋转
RotateTransform表示旋转一个对象的角度。首先我们来看一下它的定义
- public sealed class RotateTransform : Transform
- {
-
- public static readonly DependencyProperty AngleProperty;
- public static readonly DependencyProperty CenterXProperty;
- public static readonly DependencyProperty CenterYProperty;
-
- public RotateTransform();
- public RotateTransform(double angle);
- public RotateTransform(double angle, double centerX, double centerY);
-
- public double Angle { get; set; }
- public double CenterX { get; set; }
- public double CenterY { get; set; }
- public override Matrix Value { get; }
-
- public RotateTransform Clone();
- public RotateTransform CloneCurrentValue();
- protected override Freezable CreateInstanceCore();
- }
复制代码 Angle属性表示获取或设置顺时针旋转的角度(以度为单位)。默认值是0度。
CenterX 和CenterY 表示获取或设置旋转中心点的 x y坐标,Value属性表示当前转换的矩阵。
通常我们只需要设置Angle、CenterX 和CenterY即可
案列:- <Button Grid.Column="1"
- Width="100"
- Height="25"
- Content="RotateTransform"
- HorizontalAlignment="Center"
- VerticalAlignment="Center">
- <Button.<strong>RenderTransform</strong>>
- <<strong>RotateTransform Angle</strong>="{Binding ElementName=slider,Path=Value}"<strong>
- CenterX</strong>="50" <strong>CenterY</strong>="12.5"/>
- </Button.RenderTransform>
- </Button>
- <Slider x:Name="slider"
- Grid.ColumnSpan="3"
- Margin="30"
- HorizontalAlignment="Left"
- VerticalAlignment="Bottom"
- Value="0"
- Maximum="720"
- Width="400" />
复制代码
ScaleTransform缩放
ScaleTransform表示在二维xy坐标系内缩放对象。所以它放大缩小的方向只有两个,分别是X方向和Y方向。另外,每个方向上需要设置一个中心点。
- public sealed class ScaleTransform : Transform
- {
- public static readonly DependencyProperty ScaleXProperty;
- public static readonly DependencyProperty ScaleYProperty;
- public static readonly DependencyProperty CenterXProperty;
- public static readonly DependencyProperty CenterYProperty;
-
- public ScaleTransform();
- public ScaleTransform(double scaleX, double scaleY);
- public ScaleTransform(double scaleX, double scaleY, double centerX, double centerY);
-
- public double ScaleX { get; set; }
- public double ScaleY { get; set; }
- public double CenterX { get; set; }
- public double CenterY { get; set; }
- public override Matrix Value { get; }
-
- public ScaleTransform Clone();
- public ScaleTransform CloneCurrentValue();
- protected override Freezable CreateInstanceCore();
- }
复制代码 ScaleX属性:获取或设置X轴缩放比例。
ScaleY属性:获取或设置Y轴缩放比例。
CenterX属性:获取或设置当前缩放对象的X轴的中心坐标。
CenterY属性:获取或设置当前缩放对象的Y轴的中心坐标。
案例:- <Button Grid.Column="1"
- Width="100"
- Height="25"
- Content="RotateTransform"
- HorizontalAlignment="Center"
- VerticalAlignment="Center">
- <Button.<strong>RenderTransform</strong>>
- <<strong>RotateTransform Angle</strong>="{Binding ElementName=slider,Path=Value}"<strong>
- CenterX</strong>="50" <strong>CenterY</strong>="12.5"/>
- </Button.RenderTransform>
- </Button>
- <Slider x:Name="slider"
- Grid.ColumnSpan="3"
- Margin="30"
- HorizontalAlignment="Left"
- VerticalAlignment="Bottom"
- Value="0"
- Maximum="720"
- Width="400" /> <Button Grid.Column="1"
- Width="100"
- Height="25"
- Content="RotateTransform"
- HorizontalAlignment="Center"
- VerticalAlignment="Center">
- <Button.<strong>RenderTransform</strong>>
- <<strong>RotateTransform Angle</strong>="{Binding ElementName=slider,Path=Value}"<strong>
- CenterX</strong>="50" <strong>CenterY</strong>="12.5"/>
- </Button.RenderTransform>
- </Button>
- <Slider x:Name="slider"
- Grid.ColumnSpan="3"
- Margin="30"
- HorizontalAlignment="Left"
- VerticalAlignment="Bottom"
- Value="0"
- Maximum="720"
- Width="400" />
复制代码
SkewTransform倾斜
SkewTransform表示倾斜某个对象,它有两个方向的倾斜角度可以设置,AngleX表示设置x 轴倾斜角度,该角度是从 y 轴逆时针旋转后测量得到,单位为度。AngleY表示设置y 轴倾斜角度,该角度通过测量从 x 轴逆时针旋转得到的角度度数。另外,它也有CenterX和CenterY,表示倾斜转换中心的xy坐标。- public sealed class SkewTransform : Transform
- {
- public static readonly DependencyProperty AngleXProperty;
- public static readonly DependencyProperty AngleYProperty;
- public static readonly DependencyProperty CenterXProperty;
- public static readonly DependencyProperty CenterYProperty;
-
- public SkewTransform();
- public SkewTransform(double angleX, double angleY);
- public SkewTransform(double angleX, double angleY, double centerX, double centerY);
-
- public double AngleX { get; set; }
- public double AngleY { get; set; }
- public double CenterX { get; set; }
- public double CenterY { get; set; }
- public override Matrix Value { get; }
-
- public SkewTransform Clone();
- public SkewTransform CloneCurrentValue();
-
- }
复制代码 案例:- <Button Grid.Column="1"
- Width="100"
- Height="25"
- Content="RotateTransform"
- HorizontalAlignment="Center"
- VerticalAlignment="Center">
- <Button.<strong>RenderTransform</strong>>
- <<strong>RotateTransform Angle</strong>="{Binding ElementName=slider,Path=Value}"<strong>
- CenterX</strong>="50" <strong>CenterY</strong>="12.5"/>
- </Button.RenderTransform>
- </Button>
- <Slider x:Name="slider"
- Grid.ColumnSpan="3"
- Margin="30"
- HorizontalAlignment="Left"
- VerticalAlignment="Bottom"
- Value="0"
- Maximum="720"
- Width="400" /> <Button Grid.Column="1"
- Width="100"
- Height="25"
- Content="RotateTransform"
- HorizontalAlignment="Center"
- VerticalAlignment="Center">
- <Button.<strong>RenderTransform</strong>>
- <<strong>RotateTransform Angle</strong>="{Binding ElementName=slider,Path=Value}"<strong>
- CenterX</strong>="50" <strong>CenterY</strong>="12.5"/>
- </Button.RenderTransform>
- </Button>
- <Slider x:Name="slider"
- Grid.ColumnSpan="3"
- Margin="30"
- HorizontalAlignment="Left"
- VerticalAlignment="Bottom"
- Value="0"
- Maximum="720"
- Width="400" />
复制代码
TranslateTransform平移
TranslateTransform只有X和Y两个属性,分别代表X轴和Y轴上的平移距离。- public sealed class TranslateTransform : Transform
- {
- public static readonly DependencyProperty XProperty;
- public static readonly DependencyProperty YProperty;
-
- public TranslateTransform();
- public TranslateTransform(double offsetX, double offsetY);
-
- public double X { get; set; }
- public double Y { get; set; }
- public override Matrix Value { get; }
-
- public TranslateTransform Clone();
- public TranslateTransform CloneCurrentValue();
-
- }
复制代码
案例:- <Button Grid.Column="1"
- Width="100"
- Height="25"
- Content="RotateTransform"
- HorizontalAlignment="Center"
- VerticalAlignment="Center">
- <Button.<strong>RenderTransform</strong>>
- <<strong>RotateTransform Angle</strong>="{Binding ElementName=slider,Path=Value}"<strong>
- CenterX</strong>="50" <strong>CenterY</strong>="12.5"/>
- </Button.RenderTransform>
- </Button>
- <Slider x:Name="slider"
- Grid.ColumnSpan="3"
- Margin="30"
- HorizontalAlignment="Left"
- VerticalAlignment="Bottom"
- Value="0"
- Maximum="720"
- Width="400" /> <Button Grid.Column="1"
- Width="100"
- Height="25"
- Content="RotateTransform"
- HorizontalAlignment="Center"
- VerticalAlignment="Center">
- <Button.<strong>RenderTransform</strong>>
- <<strong>RotateTransform Angle</strong>="{Binding ElementName=slider,Path=Value}"<strong>
- CenterX</strong>="50" <strong>CenterY</strong>="12.5"/>
- </Button.RenderTransform>
- </Button>
- <Slider x:Name="slider"
- Grid.ColumnSpan="3"
- Margin="30"
- HorizontalAlignment="Left"
- VerticalAlignment="Bottom"
- Value="0"
- Maximum="720"
- Width="400" />
复制代码 在这个例子中,左边的border的TranslateTransform 对象的值直接绑定到slider,拖动两个slider就可以控制border水平和垂直方向的位置。右边的border则利用鼠标按下、移动和抬起事件,初步实现了用鼠标去移动位置的功能- public partial class MainWindow : Window
- {
- public Point DownPoint { get; private set; } = new Point(0, 0);
- public bool IsMouseDown { get; private set; } = false;
- public MainWindow()
- {
- InitializeComponent();
- }
-
- private void Window_MouseMove(object sender, MouseEventArgs e)
- {
- if (!IsMouseDown) return;
-
- if (border.RenderTransform is TranslateTransform t)
- {
- Point point = e.GetPosition(this);
- t.X = (point.X - DownPoint.X);
- t.Y = (point.Y - DownPoint.Y);
- }
- }
-
- private void Window_MouseDown(object sender, MouseButtonEventArgs e)
- {
- IsMouseDown = true;
- DownPoint = e.GetPosition(this);
- }
-
- private void Window_MouseUp(object sender, MouseButtonEventArgs e)
- {
- IsMouseDown = false;
- }
- }
复制代码
来源:https://www.cnblogs.com/MingQiu/p/18000496
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|