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,一经查实,立即删除!

相关文章

julia矩阵运算_Julia中的复数及其运算

julia矩阵运算Julia| 复数 (Julia | Complex Numbers) The syntax to represent the complex number in Julia is: 在Julia中表示复数的语法为&#xff1a; Syntax: 句法&#xff1a; ABimHere, A and B are the values, and im is the global constant which is bound to th…

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;在编程语言中…

.net romoting 的EventWrapper类

.net romoting 的EventWrapper类 注意&#xff1a;防火墙的问题 --------------------------------------------------- //定义广播服务接口 [Serializable] public delegate void BroadCastEventHandler(string info); public interface IBroadCastService {…

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

一、织物形成的五大运动&#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;项目跑起来&…

java类只读怎么办_如何在Java中制作一个只读类?

java类只读怎么办The question is that "can we make a read-only class in Java?" 问题是“我们可以用Java制作一个只读类吗&#xff1f;” The answer is: "Yes, we can make a read-only in java." 答案是&#xff1a; “是的&#xff0c;我们可以在J…

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

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

NHibernate 的 ID 标识选择器

在 Hibernate 中&#xff0c;每个对象需要一个标识 ID&#xff0c;通过这个标识 ID 建立对象与数据库中记录的对应关系。 Nhibernate 提供了多种方式来建立这个 POID。基于不同的生成策略&#xff0c;可以选择更佳的方式。 首先是赋值方式&#xff1a;assigned&#xff0c;这种…

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

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

c语言 函数的参数传递示例_scalbln()函数以及C ++中的示例

c语言 函数的参数传递示例C scalbln()函数 (C scalbln() function) scalbln() function is a library function of cmath header. It scales the significand using floating-point base exponent (long int) i.e. it is used to calculate the product of the given signific…

上周热点回顾(7.8-7.14)

热点随笔&#xff1a; MingQQ v1.0高仿版开源了&#xff0c;使用WebQQ协议实现了QQ客户端基本的聊天功能...&#xff08;ZYM&#xff09; 我的新书&#xff0d;&#xff0d;《从员工到经理人》&#xff08;Jimmy Zhang&#xff09; MVC实用架构设计&#xff08;三&#xff0…

储存过程生成器

/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…

基于计算机控制的温度检测系统,基于专用温度传感的温度检测系统.doc

基于专用温度传感的温度检测系统摘 要 在现代工业领域温度检测系统是指用某种方式显示出当前的环境温度。传统使用PTC或NTC电阻作为温度传感器的方式在使用过程中存在着很多不足之处比如所采集温度的精度比较低、系统的可靠性差、设计难度较大、整体设计成本较高等缺点已…

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;经纬纱组织…

EASYUI+MVC4通用权限管理平台

通用权限案例平台在经过几年的实际项目使用&#xff0c;并取得了不错的用户好评。在平台开发完成后&#xff0c;特抽空总结一下平台知识&#xff0c;请各位在以后的时间里&#xff0c;关注博客的更新。 1.EASYUIMVC4通用权限管理平台--前言 2.通用权限管理平台--架构选型 3.通用…