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:

<Rectangle Width="100" Height="80Fill="Red"> 
    <Rectangle.RenderTransform> 
        <RotateTransform Angle="45"/> 
    </Rectangle.RenderTransform> 
</Rectangle> 

如果要为这样写好的XAML代码添加叠加变形时,我们不得不写更多的变形对象和添加一个TransformGroup把这些变形对象“包”起来,变为以下的样子。

XAML:

<Rectangle Height="100" Width="80" Fill="Red"> 
    <Rectangle.RenderTransform> 
        <TransformGroup> 
            <ScaleTransform ScaleX="0.8" ScaleY="0.8" /> 
            <SkewTransform AngleX="30" /> 
            <RotateTransform Angle="45" /> 
        </TransformGroup> 
    </Rectangle.RenderTransform> 
</Rectangle> 

 

 

从上面的XAML代码看来,在我们使用这种方式手写编码来叠加变形效果在代码上面稍显“罗嗦”,在Silverlight4.0中加入了新的变形对象CompositeTransform,我们可以称为“复合变形对象”,通过CompositeTransform我们可以简以上的XAML代码大大简化,等效XAML如下。

XAML:

<Rectangle Height="100" Width="80" Fill="Red"> 
    <Rectangle.RenderTransform> 
        <CompositeTransform SkewX="30" Rotation="45" ScaleX="0.8" ScaleY="0.8" /> 
    </Rectangle.RenderTransform> 
</Rectangle> 

上面使用复合变形实现的效果与TransformGroup是完全一致的,但代码上简洁了许多,接下来我们使用复合变形对象实现一个“简洁版”的倒影效果。

XAML:

1      <Grid Background="Black"> 
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> 

运行结果如图所示。

image

等效的C#代码如下:

1          //等效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

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

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

相关文章

2019年的wps计算机考试题,2019年3月计算机一级WPS模拟题及答案(2.21)

【导语】2019年3月计算机一级考试备考正在进行中&#xff0c;为了方便考生及时有效的备考&#xff0c;那么&#xff0c;无忧考网为您精心整理了2019年3月计算机一级WPS模拟题及答案(2.21)&#xff0c;把握机会抓紧练习吧。如想获取更多计算机一级考试模拟题及备考资料&#xff…

Python求解多项式方程

例如&#xff1a;二次函数&#xff1a;f(x) 10x^2 - 14x 22&#xff0c;依次求解x1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6时函数表达式所对应的函数值。 import numpy as np #f(x) 10*x^2 - 14x 22 p np.array([10,-14,22])#这里存放的是系…

CSS中的border-radius属性

CSS | 边界半径属性 (CSS | border-radius Property) The border-radius property is commonly used to convert box elements into circles. We can convert box elements into the circle element by setting the border-radius to half of the length of a square element. …

【C++ grammar】Enhancement for Type System (C++11 对类型系统的增强)

数据类型 (Data type) int, long int, double, struct, char *, float [], int (*f)()… 计算机程序构造块 计算机程序构造块是不同大小粒度的计算机程序组成部分&#xff0c;它包括变量、表达式、函数或者模块等。 类型系统 (Type System) 类型系统&#xff1a;在编程语言中…

一、织物组织相关基本概念

一、织物形成的五大运动&#xff1a;开口、引纬、打纬、送经、卷取 开口运动&#xff08;先开口让织物形成上下两层&#xff09; 引纬运动&#xff08;在上下两层经纱之间进行引纬&#xff0c;把纬纱穿入上下两层经纱之间&#xff0c;从而实现经纱纬纱之间的交织&#xff09; …

达尔豪斯大学计算机科学世界排名,达尔豪斯大学成了全加最好,这又是个什么排名?...

原标题&#xff1a;达尔豪斯大学成了全加最好&#xff0c;这又是个什么排名&#xff1f;没有“八大”的知名&#xff0c;没有“常春藤”的受宠&#xff0c;虽然它只是众多名校中的普通一个&#xff0c;但只要你对它有个稍微的了解&#xff0c;你一定会爱上它的&#xff01;它虽…

tag标签记录

看到项目代码中有一个自定义的tag标签&#xff0c;想起以前自己写过的标签&#xff0c;竟然忘记的差不多了&#xff0c;手一痒&#xff0c;自己写个简单的tag标签&#xff0c;回顾一下历史知识 首先建一个servlet工程&#xff0c;然后写个index.jsp&#xff0c;项目跑起来&…

LeetCode 53:最大子序和解题以及优化思路(第一次独立刷题记录)

给定一个整数数组 nums &#xff0c;找到一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大&#xff0c;为 6。 进阶: 如果你已经实现…

三、规则组织的衍生组织——经山形组织数学模型的建立

基础概念公式推到可参考该专栏下的前几篇博文。 经山形组织图&#xff1a; 左半部分&#xff1a;&#xff0c;3上2下1上2下&#xff0c;右斜&#xff0c;飞数为1 右半部分&#xff1a;&#xff0c;3上2下1上2下&#xff0c;左斜&#xff0c;飞数为-1 左右两部分只有飞数是相…

储存过程生成器

/Files/qanholas/SPGen_ReleaseCandidate1_Binaries.zip ---- Dropping stored procedure sp_费用表_SelectAll : --IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id OBJECT_ID(N[sp_费用表_SelectAll]) AND OBJECTPROPERTY(id, NIsProcedure) 1)DROP PROCEDURE [dbo].[sp…

LeetCode 121:买卖股票的最佳时机 思考分析

题目描述&#xff1a; 给定一个数组&#xff0c;它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易&#xff08;即买入和卖出一支股票一次&#xff09;&#xff0c;设计一个算法来计算你所能获取的最大利润。 注意&#xff1a;你不能在买入股票前卖出…

四、规则组织的衍生组织——经向破斜组织数学模型的建立

基础概念公式推到可参考该专栏下的前几篇博文。 经向破斜组织图&#xff1a; 左半部分&#xff1a;&#xff0c;3上2下1上2下&#xff0c;右斜&#xff0c;飞数为1 右半部分&#xff1a;&#xff0c;2上1下2上3下。左斜&#xff0c;飞数为-1 左右两部分&#xff0c;经纬纱组织…

【数据结构基础】【散列表】

散列表也叫做哈希表(hash table),这种数据结构提供了键(key)和值(value)的映射关系。只要给出一个key&#xff0c;就可以高效查找它匹配的value&#xff0c;时间复杂度接近O(1); 哈希函数 哈希函数通过某种方式&#xff0c;把key和数组下标进行转换。 在java中&#xff0c;每…

VisualStudio运行C++项目检测include<stdio.h>报错解决方案

一、项目—>属性 二、将SDL检查更改为否即可

信息设计中的“父子关系”

交互设计工作核心在于信息架构和交互细节设计。信息架构包括信息分类以及信息展示逻辑设计&#xff1b;交互细节则多表现为控件的选择&#xff0c;交互效果的定义等。在信息设计中&#xff0c;遇到最棘手的问题就是信息量太多而显得设计结果不尽人意&#xff0c;那么在砍不掉需…

[Object-oriented] : 控制反转

前言 : 参加点部落的活动&#xff0c;关于IoC(控制反转)大家有很多的讨论。本文排除对象生成的部份&#xff0c;单纯解释IoC为甚么叫做控制反转。本篇文章以之前写的 [Object-oriented] : 重用内容来举例。 未IoC之前的对象图 : 很明显的左边的组件A&#xff0c;相依右边的组件…

二、规则组织数学模型的建立

一、规则组织数学模型的建立 规则组织满足两个不变&#xff1a;1&#xff0c;组织点运动规律不变、2&#xff0c;飞数不变的单系统组织 即&#xff1a;若知道组织点运动规律和飞数即可确定唯一一个组织。 3上2下&#xff0c;组织循环数为325&#xff0c;经纱循环数纬纱循环数…

LeetCode 3:无重复字符的最长子串 思考分析

给定一个字符串&#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”&#x…

美国人看见的是友情,中国人看见的是忠诚

美国人看见的是友情&#xff0c;中国人看见的是忠诚 这是一个人狗情未了的感人事件。 一个即将死去的人&#xff0c;总有未了的心愿难以割舍&#xff0c;来自美国的凯文麦克莱恩实现了他的临终愿望&#xff0c;而他的最后愿望就是与自己的爱犬见上最后一面。 现年57岁的凯文麦克…

PyCharm安装及配置

一、下载PyCharm和相关工具 qoi8 二、安装PyCharm 先不要运行PyCharm 三、将jar包放到PyCharm安装目录的bin文件夹下 三、找到pycharm64.exe.vmoptions和pycharm.exe.vmoptions配置文件 四、编辑这两个文件&#xff0c;在这两个文件最后一行加入下载好的jar包文件路径 -ja…