Silverlight学习笔记(九)-----RenderTransform特效【五种基本变换】及【矩阵变换MatrixTransform】...

 

RenderTransform特效:

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

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

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

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

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

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

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

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

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

复制代码
1 <Canvas>
2 <Image Canvas.Top="160" Canvas.Left="140" Source="sun.jpg" Opacity="0.5"></Image>
3 <Image Canvas.Top="160" Canvas.Left="140" Source="sun.jpg">
4 <Image.RenderTransform>
5 <TranslateTransform X="120" Y="120"></TranslateTransform>
6 </Image.RenderTransform>
7 </Image>
8 </Canvas>
复制代码

          

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

复制代码
1 <Canvas>
2 <Image Canvas.Top="160" Canvas.Left="140" Source="sun.jpg" Opacity="0.5"></Image>
3 <Image Canvas.Top="160" Canvas.Left="140" Source="sun.jpg">
4 <Image.RenderTransform>
5 <RotateTransform Angle="45" CenterX="0" CenterY="0"></RotateTransform>
6 </Image.RenderTransform>
7 </Image>
8 </Canvas>
复制代码

          

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

复制代码
1 <Canvas>
2 <Image Canvas.Top="160" Canvas.Left="140" Source="sun.jpg" Opacity="0.5"></Image>
3 <Image Canvas.Top="160" Canvas.Left="140" Source="sun.jpg">
4 <Image.RenderTransform>
5 <ScaleTransform ScaleX="0.5" ScaleY="0.5"></ScaleTransform>
6 </Image.RenderTransform>
7 </Image>
8 </Canvas>
复制代码


          

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

复制代码
1 <Canvas>
2 <Image Canvas.Top="160" Canvas.Left="140" Source="sun.jpg" Opacity="0.5"></Image>
3 <Image Canvas.Top="160" Canvas.Left="140" Source="sun.jpg">
4 <Image.RenderTransform>
5 <SkewTransform AngleX="30" AngleY="10"></SkewTransform>
6 </Image.RenderTransform>
7 </Image>
8 </Canvas>
复制代码

         



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

复制代码
 1 <Canvas Width="640" Height="480">
2 <Rectangle Canvas.Top="20" Canvas.Left="200" Width="400" Height="300" Stroke="Black" StrokeThickness="5">
3 <Rectangle.RenderTransform>
4 <TransformGroup>
5 <!--RotateTransform 变换-->
6 <RotateTransform Angle="10"></RotateTransform>
7 <!--SkewTransform变换-->
8 <SkewTransform AngleX="-10" AngleY="30" CenterX="20" CenterY="50"></SkewTransform>
9 </TransformGroup>
10 </Rectangle.RenderTransform>
11 <Rectangle.Fill>
12 <ImageBrush ImageSource="sun.jpg"></ImageBrush>
13 </Rectangle.Fill>
14 </Rectangle>
15 </Canvas>
复制代码





          



-----------------------------------------------------MatrixTransform 矩阵变换------------------------------------------

   
  MatrixTransform矩阵变换,其实就是其他变形类的底层实现的代码,其他的类都是基于这个类的扩展,以让用户可以更加简单方便的应用,至于MatrixTransform则是通过一种矩阵算法来进行运算得到相应的变形的效果的。矩阵的一些基本算法就不多总结了,以前上课就学过了,网上也有不少讲解。


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



  原理:
  原坐标(x0,y0)通过这个3*3矩阵得到变换之后的新坐标(x1,y1)的过程如下:

    [x0,y0] *,通过矩阵乘法可得到坐标 (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.

1 <!--源码用法--> 
2
3 <MatrixTransform Matrix="M11 M12 M21 M22 OffsetX OffsetY"></MatrixTransform>

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

 

复制代码
 1 <Canvas Width="1200" Height="300">
2 <StackPanel Orientation="Horizontal" Canvas.Top="50">
3 <!-- TranslateTransform 平移 -->
4 <Image Source="Images/adobe_Ai.png" Height="100" Width="100" Stretch="Fill"
5 Margin="10" Opacity="0.5"></Image>
6 <Image Source="Images/adobe_Ai.png" Height="100" Width="100" Stretch="Fill"
7 Margin="10">
8 <Image.RenderTransform>
9 <MatrixTransform Matrix="1 0 0 1 -80 30"></MatrixTransform>
10 </Image.RenderTransform>
11 </Image>
12
13 <!-- RotateTransform 旋转 -->
14 <Image Source="Images/adobe_Dw.png" Height="100" Width="100" Stretch="Fill"
15 Margin="10" Opacity="0.5"></Image>
16 <Image Source="Images/adobe_Dw.png" Height="100" Width="100" Stretch="Fill"
17 Margin="10">
18 <Image.RenderTransform>
19 <!-- 90°旋转 -->
20 <MatrixTransform Matrix="0 1 -1 0 30 0"></MatrixTransform>
21 </Image.RenderTransform>
22 </Image>
23
24 <!-- ScaleTransform 缩放 -->
25 <Image Source="Images/adobe_Fl.png" Height="100" Width="100" Stretch="Fill"
26 Margin="10" Opacity="0.5"></Image>
27 <Image Source="Images/adobe_Fl.png" Height="100" Width="100" Stretch="Fill"
28 Margin="10">
29 <Image.RenderTransform>
30 <!--放大1.5倍-->
31 <MatrixTransform Matrix="1.5 0 0 1.5 -80 0"></MatrixTransform>
32 </Image.RenderTransform>
33 </Image>
34
35 <!-- SkewTransform 扭曲倾斜 -->
36 <Image Source="Images/adobe_Fw.png" Height="100" Width="100" Stretch="Fill"
37 Margin="10" Opacity="0.5"></Image>
38 <Image Source="Images/adobe_Fw.png" Height="100" Width="100" Stretch="Fill"
39 Margin="10">
40 <Image.RenderTransform>
41 <!-- x轴倾斜 -->
42 <MatrixTransform Matrix="1 0 1 1 -80 0"></MatrixTransform>
43 </Image.RenderTransform>
44 </Image>
45
46 <!-- TransformGroup 扭曲、缩放 -->
47 <Image Source="Images/adobe_Id.png" Height="100" Width="100" Stretch="Fill"
48 Margin="10" Opacity="0.5"></Image>
49 <Image Source="Images/adobe_Id.png" Height="100" Width="100" Stretch="Fill"
50 Margin="10">
51 <Image.RenderTransform>
52 <!-- x轴倾斜 -->
53 <!--放大1.5倍-->
54 <MatrixTransform Matrix="1.5 0 1 1.5 -120 0"></MatrixTransform>
55 </Image.RenderTransform>
56 </Image>
57 </StackPanel>
58 </Canvas>
复制代码

 



--------------------------------------------------完美分割线-----------------------------------------------------

先学到这,欢迎各位前辈指点纠错~!

今天开始上课了,纠结。。。

转载于:https://www.cnblogs.com/Belling/archive/2012/11/15/2771800.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React 篇 Search Bar and content Table

我们要构建一个模块&#xff0c;其中包含一个内容显示的表格&#xff0c;然后上面有一个提供Search的栏位&#xff0c;并对Search中输入栏进行监听&#xff0c;当有改变的时候&#xff0c;触发Search然后对内容表中的内容进行过滤。 Demo Link:http://czrmodel.mybluemix.net/…

PrimeFaces:在动态生成的对话框中打开外部页面

我已经在即将出版的PrimeFaces Cookbook 2版中写了一篇关于食谱的博客。 在这篇文章中&#xff0c;我想发表第二篇关于一个名为Dialog Framework的小型框架的文章。 我个人喜欢它&#xff0c;因为我记得我为使用Struts框架付出同样的努力而付出的代价。 当您想将外部页面加载到…

vue-router之 beforeRouteEnter

beforeRouteEnter在每次路由切换都执行 ,而项目优化后,切换路由mounted只在最开始执行一次beforeRouteEnter的具体用法可参考官方文档 https://cn.vuejs.org/v2/guide/migration-vue-router.html#activate-替换 需要注意的是&#xff1a;在这期间路由跳转携带的数据发生改变会影…

突破极限–如何将AeroGear Unified Push用于Java EE和Node.js

在2014年底的AeroGear队宣布红帽的JBoss统一推送服务器的可用性xPaaS 。 让我们仔细看看&#xff01; 总览 统一推送服务器允许开发人员将本地推送消息发送到Apple的推送通知服务&#xff08;APNS&#xff09;和Google的云消息传递&#xff08;GCM&#xff09;。 它具有一个内…

js 获取json数组里面数组的长度

作为一个前端页面开发者第一次处理json数据&#xff0c;遇到了‘js 获取json数组里面数组的长度’&#xff1f;竟然不知道 json没有.length属性&#xff08;真是要嘲讽下自己&#xff09;&#xff0c;少壮不努力老大徒伤悲啊&#xff01;以前都是去寻求男朋友帮助&#xff0c;但…

针对WildFly和EAP运行Java Mission Control和Flight Recorder

Java Mission Control &#xff08;JMC&#xff09;使您可以监视和管理Java应用程序&#xff0c;而无需引入通常与这些类型的工具相关的性能开销。 它使用为正常的JVM动态优化而收集的数据&#xff0c;从而形成了一种非常轻量级的方法来观察和分析应用程序代码中的问题。 JMC由…

C#堆栈和堆的讲解

OS和CLR通常将用于容纳数据的内存划分为两个独立的区域&#xff0c;每个区域都采用截然不同的方式来管理&#xff1a;堆栈&#xff08;Stack&#xff09;和堆&#xff08;heap&#xff09;。&#xff08;1&#xff09; 调用一个方法时&#xff0c;它的参数以及它的局部变…

jQuery中的常用内容总结(一)

jQuery中的常用内容总结(一) 前言 不好意思(✿◠‿◠)&#xff0c;由于回家看病以及处理一些其它事情耽搁了&#xff0c;不然这篇博客本该上上周或者上周写的&#xff1b;同时闲谈几句&#xff1a;在这里建议各位开发的童鞋&#xff0c;如果有疾病尽快治疗&#xff0c;不要拖&a…

线程魔术技巧:Java线程可以做的5件事

Java线程最鲜为人知的事实和用例是什么&#xff1f; 有些人喜欢爬山&#xff0c;有些人喜欢跳伞。 我&#xff0c;我喜欢Java。 我喜欢它的一件事是&#xff0c;您永不停止学习。 您每天使用的工具通常可以向您展示全新的方面&#xff0c;以及您还没有机会看到的方法和有趣的用…

强制删除tfs未迁入项的两个方法。

方法1&#xff1a; 打开Vs2008的命令提示&#xff1a; 查看用户的工作区&#xff1a; 输入&#xff1a; Tf workspaces /owner:所有者或* /server:服务器名称或IP ex: tf workspaces /owner:stcct(所有者) /server:203.156.1.100(Ip地址) 删除用户的未迁入项&#xff1a; 输…

点击左侧跳到右侧

效果图 JS部分 function moveOption(e1, e2){ try{ for(var i0;i<e1.options.length;i ){ if(e1.options[i].selected){ var e e1.options[i]; e2.options.add(new Option(e.text, e.value)); e1.remove(i); iii-1 } } } catch(e){}} HTML以及CSS部分 <for…

IDC关于使用JBoss Fuse的商业价值的报告(与Apache Camel一起使用)

这只是一篇博客文章&#xff0c;具有更多的商业性质&#xff0c;但是您不能一无所有。 实际上&#xff0c;这也是使Apache Camel保持活力并保持良好状态的原因&#xff0c;这还归功于其商业上的成功。 希望从JBoss Fuse之类的产品中寻找有关在商业上使用Apache Camel的附加值的…

Spring-Quartz (一)

摘自&#xff1a; http://www.blogjava.net/Jay2009/archive/2009/03/25/259176.htmlSpring为创建Quartz的Scheduler、Trigger和JobDetail提供了便利的FactoryBean类&#xff0c;以便能够在Spring 容器中享受注入的好处。此外Spring还提供了一些便利工具类直接将Spring中的Bean…

在Java EE 7上骑骆驼–带有Swagger文档的REST服务

骆驼开箱即用。 Swagger集成就是其中之一。 不幸的是&#xff0c;大多数已经存在的功能都严重依赖于Spring。 但这并不能阻止我们在普通的Java EE 7应用程序中使用它们&#xff0c;因为有时它只是服务器的轻量级变体。 但我不想再对此进行讨论。 相反&#xff0c;我认为在所有情…

怎么隐藏滚动条又能滚动

1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>滚动条隐藏</title>6 <style>7 body, ul, li {8 margin: 0;9 padding: 0; 10 …

Eclipse to android

JDK Eclipse Android SDK ADT 1 必须软件 Java JDK SE 1.6 (jdk-7u9-windows-i586.exe) Eclipse (Eclipse IDE for Java Developers) Google Android SDK (android-sdk_r15-windows.zip) ADT (ADT-15.0.0.zip) 如果找不到可参考&#xff1a; http://blog.csdn.net/zhenyong…

canvas画饼图

<style> body { background: black; text-align: center; } #cans { background: white; } </style> <script> function disToRad(n){//将度数表示弧度计算的方法 return n*Math.PI/180;//π用PI表示&#xff0c;π180&#xff0c;所以1PI/180 } w…

Web设计趋势分析

本文译自网站设计公司weavora.com&#xff0c;介绍了在他们眼里 8 个 Web 设计趋势&#xff1a;单页面、用照片做背景、色块设计、超大号的图片、聚焦简洁、响应式设计、视差滚动、强调字体&#xff0c;每个趋势后面都附了数个案例&#xff0c;相信对网站设计师会有一定的参考价…

使用Jasmine,Spock和Nashorn测试JVM服务器端JavaScript

JavaScript使用不仅限于浏览器中的客户端代码或NodeJS支持的服务器端代码。 许多基于JVM的项目都将其用作内部脚本语言。 测试这种功能既不简单也不标准。 在本文中&#xff0c;我打算演示一种使用成熟的工具&#xff08;例如Jasmine &#xff0c; Spock和Nashorn在服务器端JVM…

带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体

Hibernate OGM的第一个最终版本已经发布 &#xff0c;团队从发布狂潮中恢复了一些。 因此&#xff0c;他们考虑建立一系列教程式博客&#xff0c;使您有机会轻松地从Hibernate OGM重新开始。 感谢Gunnar Morling&#xff08; gunnarmorling &#xff09;创建了本教程。 介绍 不…