MSDN 教学短片 WPF 11(2D图形的变化(Transform))

2D图形的变化(Transform)

我们来讲一下2D图形的变化。也就是关于RenderTransform这个属性。

我们向元素变换的时候,有两种应用变换。

  1. 如果您不希望变换影响布局,请使用该元素的 RenderTransform 属性。

  2. 如果您希望变换影响布局,请使用该元素的 LayoutTransform 属性。

下面来讲RenderTransform属性。

  1. RotateTransform属性,Angle表示旋转的角度。CenterX,CenterY表示旋转中心点的位置。
  2. ScaleTransform属性,用来放大或放小元素的。它也有CenterX,CenterY.还有ScaleX,ScaleY。表示要放大的倍数。
  3. SkewTransform属性,表示扭曲元素。AngleX和AngleY表示向X或Y方向扭曲多少度。它也有CenterX,CenterY。
  4. TranslateTransform属性,表示平移。有X和Y表示向X或Y方向平移多少距离。

下面我们用后台代码来写。

 private void button1_Click(object sender, RoutedEventArgs e)
        {
            TransformGroup tg=new TransformGroup();
            ScaleTransform sf=new ScaleTransform();
            sf.ScaleX = 2;
            RotateTransform rt=new RotateTransform();
            rt.Angle = 45;
            tg.Children.Add(sf);
            tg.Children.Add(rt);
            rectangle1.RenderTransform = tg;
        }

 

当我们按下Button时,rectangle1的形状会变成X方向放大2倍,并且以CenterX=”0”和CenterY=”0”以中心点旋转45度。

变化前:

image

变化后:

image

如果我们要实现旋转的动画呢?

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();

        private void button1_Click(object sender, RoutedEventArgs e)
        {

            t.Interval = 100;
            t.Tick += new EventHandler(t_Tick);
            t.Enabled = true;

        }

        double scale = 1;
        double angle = 0;
        void t_Tick(object sender, EventArgs e)
        {
            TransformGroup tg = new TransformGroup();
            ScaleTransform sf = new ScaleTransform(scale, scale);
            scale += .5;
            RotateTransform rt = new RotateTransform(angle);
            angle += 10;


            tg.Children.Add(sf);
            tg.Children.Add(rt);
            rectangle1.RenderTransform = tg;
        }

    }

这里我们用Timer控件来实现。这里的Timer要用这个引用

using System.Windows.Forms;

转载于:https://www.cnblogs.com/dingli/archive/2010/12/20/1911688.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值