Sliverlight变换特性
通过变换,可以为Silverlight图形对象提供旋转、缩放、扭曲和移动的特效。如果图形元素需要通过修改坐标系统来改变元素显示,可能需要使用变换功能。一般来说,所有的变换使用矩形数学改变图形元素的坐标来实现,也就是使用silverlight提供的MatrixTransform对象。通常使用系统内置的变换,比如TranslaterTransform、RotateTransform、ScaleTransform和SkewTransform。
Silverlight 提供两类变换对象,一类用于处理比较通用的变换任务,共4中:
- RotateTransform:旋转变换,通过指定一个角度值来旋转一个图形对象。
- ScaleTransform:缩放变换,通过指定ScaleX和ScaleY数值缩放一个图像对象
- SkewTransform:扭曲变换,通过指定AngleX和AngleY值来扭曲一个图像对象
- TranslateTransform:移动变换:通过指定x和y的值来移动一个对象
另外一类通常用于创建复杂的变换特效,共有如下两种:
- TransformGroup:变换组合,通过组合多个变换,使之在同一时刻应用多个变换。
- MatrixTransform:矩阵变换,通过直接操作一个矩阵来创建自定义变换。
RotateTransform
旋转变换用于将图形对象旋转一个指定的角度,具有如下3个属性。
- Angle:旋转指定角度值,默认为0
- CenterX:旋转的水平中心点,默认值为0
- CenterY:旋转的垂直中心点,默认值为0
<Grid x:Name="LayoutRoot" Background="White">
<Canvas>
<TextBlock Text="不指定旋转x,y来旋转图片" FontSize="20" Canvas.Left="50" Canvas.Top="50"></TextBlock>
<Image x:Name="pic" Source="95.jpg" Width="300" Height="400" Canvas.Left="100" Canvas.Top="100">
<Image.RenderTransform>
<RotateTransform Angle="20"/>
</Image.RenderTransform>
</Image>
</Canvas>
</Grid>
在这段代码中没有设置CenterX和CenterY的值来旋转了一张图片,运行效果如下图:

<Grid x:Name="LayoutRoot" Background="White">
<Canvas>
<TextBlock Text="不指定旋转x,y来旋转图片" FontSize="20" Canvas.Left="50" Canvas.Top="50"></TextBlock>
<Image x:Name="pic" Source="95.jpg" Width="300" Height="400" Canvas.Left="100" Canvas.Top="100">
<Image.RenderTransform>
<RotateTransform Angle="20"/>
</Image.RenderTransform>
</Image>
<TextBlock Text="指定旋转基点x,y的值分别为中心点" FontSize="20" Canvas.Left="600" Canvas.Top="200">
<TextBlock.RenderTransform>
<RotateTransform Angle="30" CenterX="50" CenterY="0"/>
</TextBlock.RenderTransform>
</TextBlock>
</Canvas>
</Grid>
设置了CenterX和CenterY的值后将在该点的位置对整个文字进行旋转,效果如下图:

ScaleTransform
缩放变换用于放大或缩小一个图形对象,可以水平缩放或者垂直缩放,或者同时水平或垂直缩放,需要用到的变换属性有4个
- ScaleX:增加图形对象的宽度,默认值为1
- ScaleY:增加图形对象的高度,默认值为1
- CenterX:水平缩放的方向,默认值为0
- CenterY:垂直缩放的方向,默认值为0
ScaleX和ScaleY通常以对象的倍数值进行赋值,比如0.5表示比原图形对象缩小一半,2表示放大一倍
<UserControl x:Class="Transform.ScaleTransform"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White">
<Canvas>
<TextBlock Text="原图" FontSize="20" Canvas.Left="40"/>
<Image Source="535.jpg" Width="140" Height="200" Canvas.Left="30" Canvas.Top="50"></Image> <TextBlock Text="水平放大两倍" FontSize="20" Canvas.Left="240"/>
<Image Source="535.jpg" Width="140" Height="200" Canvas.Left="230" Canvas.Top="50">
<Image.RenderTransform>
<ScaleTransform ScaleX="2"></ScaleTransform>
</Image.RenderTransform>
</Image> <TextBlock Text="垂直缩小一半" FontSize="20" Canvas.Left="550"/>
<Image Source="535.jpg" Width="140" Height="200" Canvas.Left="550" Canvas.Top="50">
<Image.RenderTransform>
<ScaleTransform ScaleY="0.5"></ScaleTransform>
</Image.RenderTransform>
</Image> <TextBlock Text="水平和垂直放大,并指定中心点" FontSize="20" Canvas.Left="250" Canvas.Top="300"/>
<Image Source="535.jpg" Width="140" Height="200" Canvas.Left="300" Canvas.Top="400">
<Image.RenderTransform>
<ScaleTransform ScaleX="2" ScaleY="2" CenterX="50" CenterY="50"></ScaleTransform>
</Image.RenderTransform>
</Image>
</Canvas>
</Grid>
</UserControl>
运行效果如下图所示:

SkewTransform
扭曲变换用于将一个图形扭曲指定的角度,需要使用的变换属性有如下4个:
- AngleX:水平扭曲值,默认为0
- AngleY:垂直扭曲值,默认为0
- CenterX:扭曲水平基点,默认为0
- CenterY:扭曲垂直基点,默认为0
<UserControl x:Class="Transform.SkewTransform"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White">
<Canvas>
<TextBlock Text="原图" FontSize="20" Canvas.Left="40"/>
<Image Source="729.jpg" Width="140" Height="200" Canvas.Left="30" Canvas.Top="50"></Image> <TextBlock Text="水平扭曲50度" FontSize="20" Canvas.Left="240"/>
<Image Source="729.jpg" Width="140" Height="200" Canvas.Left="230" Canvas.Top="50">
<Image.RenderTransform>
<SkewTransform AngleX="50"></SkewTransform>
</Image.RenderTransform>
</Image> <TextBlock Text="垂直扭曲20度" FontSize="20" Canvas.Left="550"/>
<Image Source="729.jpg" Width="140" Height="200" Canvas.Left="550" Canvas.Top="50">
<Image.RenderTransform>
<SkewTransform AngleY="20"></SkewTransform>
</Image.RenderTransform>
</Image> <TextBlock Text="指定中心点水平和垂直扭曲" FontSize="20" Canvas.Left="250" Canvas.Top="300"/>
<Image Source="729.jpg" Width="140" Height="200" Canvas.Left="300" Canvas.Top="400">
<Image.RenderTransform>
<SkewTransform AngleY="10" AngleX="10" CenterX="100" CenterY="50"></SkewTransform>
</Image.RenderTransform>
</Image>
</Canvas>
</Grid>
</UserControl>
运行效果如下图:

TranslateTransform
移动变换道理同上,比较简单,这里就不举例了,需要用到的属性有:
- X:水平移动的距离,默认值为0
- Y:垂直移动的距离,默认值为0
Sliverlight变换特性的更多相关文章
- [离散时间信号处理学习笔记] 10. z变换与LTI系统
我们前面讨论了z变换,其实也是为了利用z变换分析LTI系统. 利用z变换得到LTI系统的单位脉冲响应 对于用差分方程描述的LTI系统而言,z变换将十分有用.有如下形式的差分方程: $\displays ...
- Web 开发中很实用的10个效果【附源码下载】
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- Web 开发中很实用的10个效果
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- 12个来自 Codrops 的创新交互和动画效果
产品的用户体验是否被用户所接受,很大一部分取决于交互界面的设计,交互界面设计是整个产品设计中的核心,对于产品品质有着决定性的影响.这里集合了12个来自 Codrops 的创新的界面交互和动画效果,值得 ...
- 精选12个时尚的 CSS3 效果【附源码下载】
这里是精选的12个很炫的 CSS3 效果.CSS3 是对 CSS 规范的一个很大的改善和增强,它使得 Web 开发人员可以很容易的在网站中加入时尚的效果.以前很多需要编写复杂的 JavaScript ...
- 基于纯 CSS3 技术实现美观的标签云效果
标签云是博客的标配功能,能够清晰的呈现博客的各个关键词和主题.在这个效果中,您将学习如何使用 CSS3 技术创建一个效果精美的标签云效果. 作为实验项目,使用了 CSS3 渐变,阴影和最重要的的 CS ...
- 使用 CSS3 实现 3D 图片滑块效果【附源码下载】
使用 CSS3 的3D变换特性,我们可以通过让元素在三维空间中变换来实现一些新奇的效果. 这篇文章分享的这款 jQuery 立体图片滑块插件,利用了 3D transforms(变换)属性来实现多种不 ...
- 使用CSS3实现3D图片滑块效果
使用 CSS3 的3D变换特性,我们可以通过让元素在三维空间中变换来实现一些新奇的效果. 这篇文章分享的这款 jQuery 立体图片滑块插件,利用了 3D transforms(变换)属性来实现多种不 ...
- C#伪彩色处理
伪彩色处理是指将灰度图像转换成彩色图象.因为人眼对于彩色的分辨能力远高于对灰度图像的分辨能力,所以将灰度图像转换成彩色可以提高人眼对图像细节的辨别能力.伪彩色并不能真实的反映图像像的彩色情况. 效果图 ...
随机推荐
- 微信强大的demo
https://github.com/xialeistudio/wechatPublicPlatform
- c++标准库之容器
C++最原始的容器之一是数组.数组的特点有: 1.大小固定 2.单独存在的数组建立在栈上,作为对象成员存在的数组建立在堆上还是栈上则要看作为宿主对象是被建立在堆上还是栈上.栈空间是有限的,所以如果数组 ...
- 一个简单的servlet容器
[0]README 0.1)本文部分文字转自 “深入剖析Tomcat”,旨在学习 一个简单的servlet容器 的基础知识: 0.2)for complete source code, pleas ...
- Servlet线程安全 Filter http://zwchen.iteye.com/blog/91088
概述 在探讨java线程安全前,让我们先简要介绍一下Java语言. 任何语言,如C++,C#,Java,它们都有相通之处,特别是语法,但如果有人问你,Java语言的核心是什么?类库?关键字?语法?似乎 ...
- syntaxerror : unexpected token &
部署网站到服务器后,添加.修改.删除数据都会出现这个错误,之前都没有出现过. 之前的服务器系统都是windowserver2008,而这次所部署的服务器系统也是2008,只是此服务器一开始并没有安装. ...
- 数据库的SQL模式
1.定义:何为MySQL的严格模式,简单来说就是MySQL自身对数据进行严格的校验(格式.长度.类型等),比如一个整型字段我们写入一个字符串类型的数据,在非严格模式下MySQL不会报错,同样如果定义了 ...
- Eclipse集成resin服务器
就我遇到的问题来说吧: 1. resin-pro-4.0.36去官网下载,目前这是最新版,27M 2. Eclipse安装Resin服务器的插件 Help->Install New Soft-& ...
- tomcat NIO配置
1.tomcat NIO配置 今天在查看日志时发现tomcat的Socket连接方式为bio,于是我想既然有bio那肯定有nio.果然,一查就发现tomcat在6.0之后就可以配置nio的方式.nio ...
- linux下装locustio
升级Python版本 #python centOS6.8中默认安装的是2.6版本,因为我在安装到后面的时候报错Python版本较低,所以可以先把python版本升级到2.7: 直接在命令行输入:#wg ...
- python cPickle和pickle 序列化
在Python中提供了两个模块:cPickle和pickle来实现序列化,前者是由C语言编写的,效率比后者高很多,一般编写程序的时候,采取的方案是先导入cPickle模块,如果此模块不存在,再导入pi ...