一步一步学Silverlight 2系列(29):使用Transform实现更炫的效果(上)
概述
Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章将从Silverlight 2基础知识、数据与通信、自定义控件、动画、图形图像等几个方面带您快速进入Silverlight 2开发。
本文为理解 Silverlight中的变换(Transformations)第一部分,在Silverlight中提供了四种基本变换:旋转变换 (RotateTransform. )、缩放变换(ScaleTransform)、倾斜变换(SkewTransform)、移动变换(TranslateTransform)和两种复杂 的变换:变换组(TransformGroup)、矩阵变换(MatrixTransform. ),这些变换可以运用到任何控件或者图形图像。
旋转变换(RotateTransform. )
RotateTransform. 允许我们对元素围绕一个点对元素进行一个给定角度的旋转,默认情况下,将围绕左上角点(0,0)处进行旋转。可以通过元素的 RenderTransform属性来指定Transform,如下面的例子,我们在同一位置放置两张图片,对其中一张进行旋转:
<CanvasBackground="#CDFCAE">
v_@:U^8D0<ImageSource="a1.png"Canvas.Left="160"Canvas.Top="20"Opacity="0.5">
-^Mk6X,d}X0</Image>ITPUB个人空间,Y|y+p5a@6[
<ImageSource="a1.png"Canvas.Left="160"Canvas.Top="20">ITPUB个人空间H"G y] eG
<Image.RenderTransform>ITPUB个人空间1N4p@ lp9w1p
<RotateTransform.Angle="45"></RotateTransform>
jRK'J3O&]i\0</Image.RenderTransform>
I j$L+dg4j(iC0</Image>ITPUB个人空间wRk|Q| u(T
</Canvas>
运行后将围绕(0,0)旋转45°角:
xU.q
kb*]i0
_mN3H#ET
V3@z}0
如果我们想指定旋转点的话,可以通过属性CenterX和CenterY两个属性进行控制,如下代码所示:
<CanvasBackground="#CDFCAE">ITPUB个人空间o4J2vA$?
<ImageSource="a1.png"Canvas.Left="160"Canvas.Top="80"Opacity="0.5">ITPUB个人空间Xg uc.lr*[S*w
</Image>
D e2o^R_ jHF!`Z0<ImageSource="a1.png"Canvas.Left="160"Canvas.Top="80">ITPUB个人空间+|EYJ;n6m
<Image.RenderTransform>ITPUB个人空间T!gC!^4L1z|
<RotateTransform.Angle="45"CenterX="120"CenterY="68"></RotateTransform>ITPUB个人空间UB0^r'GY5XA`"fbo
</Image.RenderTransform>
!@!~]oHr0</Image>
!R,N#a;e O;~&vk[.O W0</Canvas>
运行后可以看到,将围绕图片的中心旋转45°:
f&cRF9DZ0
%\.W {2~RF2CFM0
缩放变换(ScaleTransform)
缩放变换ScaleTransform允许我们对元素进行缩放,通过属性ScaleX和ScaleY来分别指定在X轴和Y轴上的缩放比例,同样也可以使用属性CenterX和CenterY来指定缩放中心。如下面的示例:
<CanvasBackground="#CDFCAE">
jQ)e8Z? v0<ImageSource="a1.png"Canvas.Left="40"Canvas.Top="80"Opacity="0.5">ITPUB个人空间#Zbb:g:u$V
</Image>
g3eq3s uo5F0<ImageSource="a1.png"Canvas.Left="40"Canvas.Top="80">
gq*[-yF1R*N{0<Image.RenderTransform>ITPUB个人空间Qxz*O_
<ScaleTransform.ScaleX="0.5"ScaleY="0.5"></ScaleTransform>
6g_!|c*OF5Ve0</Image.RenderTransform>
Xp`4gR0e0</Image>ITPUB个人空间r2\!a$\"S.Tv4c!C%a M#N
ITPUB个人空间t/n|1MeXY!A+vC
<ImageSource="a1.png"Canvas.Left="320"Canvas.Top="80"Opacity="0.5">
9avN[%\m%j^2y0</Image>