博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF——RenderTransform特效
阅读量:4678 次
发布时间:2019-06-09

本文共 3520 字,大约阅读时间需要 11 分钟。

 

WPF中的变形(RenderTransform)类是为了达到直接去改变某个Silverlight对象的形状(比如缩放、旋转一个元素)的目的而设计的,RenderTransform包含的变形属性成员就是专门用来改变Silverlight对象形状的,它可以实现对元素拉伸,旋转,扭曲等效果,同时变形特效也常用于辅助产生各种动画效果。

1. RenderTransform类:

该类成员如下:

TranslateTransform:能够让某对象的位置发生平移变化。

RotateTransform:能够让某对象产生旋转变化,根据中心点进行顺时针旋转或逆时针旋转。

ScaleTransform:能够让某对象产生缩放变化。

SkewTransform:能够让某对象产生扭曲变化。

TransformGroup:能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用。

MatrixTransform:能够让某对象通过矩阵算法实现更为复杂的变形。

变形元素包括平移变形、旋转变形、缩放变形、扭曲变形、矩阵变形和组合变形元素,变形特效常用于在不改变对象本身构成的情况下,使对象产生变形效果,所以变形元素常辅助产生Silverlight中的各种动画效果。

通常,对于MediaElement元素使用RenderTransform属性比使用LayoutTransform属性更好,因为RenderTransform属性是轻量级的。而且它还可以使用方便的RenderTransformOrigin属性值,从而可以为特定的变换(如旋转)使用相对坐标。

 

2. TranslateTransform(平移变化):

包含X、Y 两种属性,以原来的对象为坐标原点(0,0),然后向X轴、Y轴进行平移变换。

 

3. RotateTransform(旋转变化):

包括属性Angle(旋转角度),CenterX、CenterY(旋转的中心)

 

4. ScaleTransform(缩放变化):

包括属性ScaleX、ScaleY、CenterX、CenterY,其中ScaleX、ScaleY属性表示对象在X、Y轴进行缩放的倍数,使用CenterX 和 CenterY属性指定一个中心点。

 

5. SkewTransform(扭曲变化):

包括属性AngleX、AngleY、CenterX、CenterY。其中使用AngleX让元素相对X轴倾斜角度,AngleY是让元素围绕Y轴的倾斜角度。同样CenterX和CenterY是中心点位置。

 

6. TransformGroup:

缩放、旋转、扭曲等变化效果合并起来。以上四种基本变化只是单一的变化,如果想要实现多种效果的叠加,那么就要使用到TransformGroup,否则会报错。TransformGroup的作用类似于在控件布局中的StackPanel内嵌的作用,是把多种变化元素组合成一种变化的容器。

 

7. MatrixTransform矩阵变换:

其实就是其他变形类的底层实现的代码,其他的类都是基于这个类的扩展,以让用户可以更加简单方便的应用,至于MatrixTransform则是通过一种矩阵算法来进行运算得到相应的变形的效果的。

 

矩阵中第三列的值是固定不变的!

原理:

原坐标(x0,y0)通过这个3*3矩阵,通过矩阵乘法可得到坐标 (x0 * M11+x0 * M21,y0 * M12+y0 * M22)之后,再加上 (OffsetX,OffsetY) 即可得到新坐标(x1,y1)。也即是说最终坐标 (x1,y1) : x1 =  x0 * M11 + x0 * M21 + OffsetX , y1 = y0 * M12 + y0 * M22 + OffsetY.

下面使用MatrixTransform矩阵变换实现以上五种基本的变换效果。

转载于:https://www.cnblogs.com/changbaishan/p/3433108.html

你可能感兴趣的文章
002-BootStrap基本模板
查看>>
HttpClient使用详细教程
查看>>
Python黑科技:赋值技巧
查看>>
mybatis insert前获取要插入的值
查看>>
OGRE 入门 一、 ubuntu 12.04 下编译
查看>>
MySQL按照汉字的拼音排序
查看>>
3.1.3自适应阈值化
查看>>
NABCD
查看>>
ZOJ 2850 Beautiful Meadow (简单题)
查看>>
Android开源框架ImageLoader的完美例子
查看>>
LeetCode - Best Time to Buy and Sell Stock
查看>>
自写vim插件ldoc.vim,提供智能的lua注释代码补全
查看>>
java-Coculator
查看>>
一些小例子
查看>>
WebSocket4Net 0.5发布
查看>>
转 Winmail 退信分析大全 (2012,05,02 更新)
查看>>
499 单词计数 (Map Reduce版本)
查看>>
python笔记
查看>>
2、openSession和getCurrentSession方法的区别
查看>>
msgbox.js的修改使在iframe的可视区域显示
查看>>