Silverlight4.0教程之使用CompositeTransform复合变形特效实现倒影
微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最突出的主要体现在几个方面:
开发工具增强:Visual Studio 2010具有可视化的设计工具,创建项目时可以选择运行时版本是3.0还是4.0,BLEND4加入XAML和C#代码全方位智能感知功能、XAML的样式应用更为易用等。
摄像头与MIC硬件支持:可以用极少量的代码实现启用用户本机的WebCam和Mic,并可进行本地录制。
报表打印支持:报表打印问题在Silverlight4中得到的较好的解决。
更强大的基础类控件(RichTextBox、DataGrid增强版):富文本控件RichTextBox和具有可粘贴、排序功能的DataGrid被加入。
WCF增强:终于支持TCP通讯,比较HTTP提升3-5倍,限于4502-4534端口。
兼容性增强:对Google的Chrome浏览器的支持。
MEF支持:MEF全称为Managed Extensibility Framework,译为“托管扩展框架”,支持创建大型复杂的应用程序。
运行速度提升:启动速度和渲染速度较前个版本提升约2倍左右。
DRM增强:支持PlayReady,可以对视频和音频的播放进行的保护,补充了对H.264的DRM保护。
其它增强:本地文件读写、鼠标右键事件支持、剪粘板支持。
以前当我们需要将多种变形效果(ScaleTransform、TranslateTransform、SkewTransform、RotationTransform)的叠加应用到一个Silverlight对象时一般是使用TransformGroup来组合变形对象,例如下面的代码我们要实现对一个矩形的变形
XAML:
2 <Rectangle.RenderTransform>
3 <RotateTransform Angle="45"/>
4 </Rectangle.RenderTransform>
5 </Rectangle>
如果要为这样写好的XAML代码添加叠加变形时,我们不得不写更多的变形对象和添加一个TransformGroup把这些变形对象“包”起来,变为以下的样子。
XAML:
2 <Rectangle.RenderTransform>
3 <TransformGroup>
4 <ScaleTransform ScaleX="0.8" ScaleY="0.8" />
5 <SkewTransform AngleX="30" />
6 <RotateTransform Angle="45" />
7 </TransformGroup>
8 </Rectangle.RenderTransform>
9 </Rectangle>
从上面的XAML代码看来,在我们使用这种方式手写编码来叠加变形效果在代码上面稍显“罗嗦”,在Silverlight4.0中加入了新的变形对象CompositeTransform,我们可以称为“复合变形对象”,通过CompositeTransform我们可以简以上的XAML代码大大简化,等效XAML如下。
XAML:
2 <Rectangle.RenderTransform>
3 <CompositeTransform SkewX="30" Rotation="45" ScaleX="0.8" ScaleY="0.8" />
4 </Rectangle.RenderTransform>
5 </Rectangle>
上面使用复合变形实现的效果与TransformGroup是完全一致的,但代码上简洁了许多,接下来我们使用复合变形对象实现一个“简洁版”的倒影效果。
XAML:
2 <StackPanel Width="500" Height="460" Margin="5"
3 Orientation="Vertical">
4 <TextBlock FontSize="16" Width="430" Height="20" Foreground="White">
5 CompositeTransform(组合变形对象)简化实现倒影效果
6 </TextBlock>
7 <Image Width="400" Height="240" Stretch="Fill"
8 Source="Images/avatar_8.jpg"/>
9 <Image x:Name="imgShadow" Width="400" Height="200" Stretch="Fill"
10 Source="Images/avatar_8.jpg">
11 <Image.OpacityMask>
12 <LinearGradientBrush EndPoint="0.5,1"
13 StartPoint="0.5,0">
14 <GradientStop Offset="0"/>
15 <GradientStop Color="White" Offset="1"/>
16 </LinearGradientBrush>
17 </Image.OpacityMask>
18 <Image.RenderTransform>
19 <!--使用CompositeTransform(组合变形对象)实现倒影-->
20 <CompositeTransform TranslateX="35" TranslateY="200"
21 SkewX="10"
22 ScaleY="-1" />
23 </Image.RenderTransform>
24 </Image>
25 </StackPanel>
26 </Grid>
运行结果如图所示。
等效的C#代码如下:
2 void CompositeTransformSample_Loaded(object sender, RoutedEventArgs e)
3 {
4 //创建组合变形对象
5 CompositeTransform ct = new CompositeTransform()
6 {
7 TranslateX = 35,
8 TranslateY = 200,
9 SkewX = 10,
10 ScaleY = -1
11 };
12 //应用组合变形
13 imgShadow.RenderTransform = ct;
14 }
使用复合变形代码虽然简洁,但它的CenterX和CenterY是相对固定的,你不能够根据不同的变形属性改变它的变形中心点,尤其是在动画过程时,否则你可能还需要通过TransformGroup来实现变形叠加效果或动画,不过CompositeTransform还是适用于大多数场合的变形。
转载于:https://www.cnblogs.com/Areas/archive/2011/09/29/2195066.html
Silverlight4.0教程之使用CompositeTransform复合变形特效实现倒影相关推荐
- Silverlight4.0教程之与摄像头与迈克风设备交互
微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最 ...
- 风云的银光志Silverlight4.0教程之遍历访问客户端用户的本地文件
微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最 ...
- 风云的银光志Silverlight4.0教程之富文本控件RichTextArea(RichTextBox)
微软于PDC2009上发布Silverlight 4 Beta版,微软在Silverlight 4版本中处理了约8000个的Silverlight终端用户的请求,加入了一系列另开发人员兴奋的新特性,最 ...
- [jimmyzhouj 翻译] Nehe iOS OpenGL ES 2.0教程 --Lesson 02
http://jimmyzhouj.blog.51cto.com/2317513/883520 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任 ...
- Silverlight4.0(1) 之 第一个Silverlight程序
之前有点儿纠结,一直在vs08下学Silverlight2.0,前两天Down了一个vs2010然后把Silverlight也更新到了 4.0,突然不知道是该写2.0还是4.0了,后来狠了狠心,技术嘛 ...
- silverlight4.0 写文件不能设置默认文件名
Silverlight4.0 不提供SaveFileDialog的SafeFileName的写属性 We've not exposed the "DefaultFileName" ...
- 零基础快速入门SpringBoot2.0教程 (二)
一.SpringBoot2.x使用Dev-tool热部署简介:介绍什么是热部署,使用springboot结合dev-tool工具,快速加载启动应用官方地址:https://docs.spring.io ...
- Android Studio2.0 教程从入门到精通Windows版
系列教程 Android Studio2.0 教程从入门到精通Windows版 - 安装篇 Android Studio2.0 教程从入门到精通Windows版 - 入门篇 Android Studi ...
- IoT:BLE4.0教程一 蓝牙协议连接过程与广播分析
IoT:BLE4.0教程一 蓝牙协议连接过程与广播分析 1.蓝牙简介 什么是蓝牙4.0 蓝牙无线技术是使用范围最广泛的全球短距离无线标准之一,蓝牙4.0版本涵盖了三种蓝牙技术,即传统蓝牙.高速蓝牙和低 ...
最新文章
- (47)逆向分析 KiSystemService 函数填充 _KTRAP_FRAME 部分
- 基于fdatool的滤波器设计(低通、带通、高通)
- express基础一:开始
- 正则表达式元字符整理
- 8个Python高效数据分析的技巧
- [Linux] 编译 与 链接
- Vue.js 学习笔记 九 v-if和v-show
- 从(社区电商)订购 到 出库 业务流程(个人想法)
- 创建ASP.NET MVC5 应用程序
- MathType工具栏在word里无法点击
- 实验2 网络扫描--Nmap与X-Scan
- 云计算机每秒网速,云游戏网速要求是多少_云游戏网速不够怎么办
- vuepress-theme-reco的安装与使用
- 几种求函数最值的算法
- 社会兼职工作实践报告
- 低代码平台的分类及选择参考
- 谷歌旗下专业图片编辑Snapseed获重大更新
- Ubuntu 18.04 安装 Xfce4桌面和VNC
- 数学分析教程(科大)——3.2笔记+习题
- 修改浏览器的标题和图标
热门文章
- 使用JDK工具生成SSL证书(网站https访问)
- linux dry run,dry run
- gan pytorch 实例_重新思考一阶段实例分割(Rethinking Single Shot Instance Segmentation)
- ajax请求失败后重连和promiseIfy
- Java开发者 IntelliJ IDEA 转换 VScode 时的优缺点
- 长沙网络推广浅析影响网站快照更新时间的因素是什么?
- 以后国产手机都要装鸿蒙系统吗,如果华为发布鸿蒙手机操作系统,国产软件会能用吗,形成一个生态系统吗?...
- 一蹴而就的解释是什么_健身会让我们成为什么样的人?
- html5 list css,使用HTML5的classList属性操做CSS类
- 微信小程序从oracle取数,微信小程序 取随机数