入门10-Transform(变换)的应用
来源:互联网 发布:海康威视ip网络不可达 编辑:程序博客网 时间:2024/05/18 02:31
接着介绍一下Silverlight变换(Transform)的应用
首先,说一下Silverlight支持的四种变形效果:
- 旋转效果 <RotateTransform... />
- 移动效果 <TranslateTransform.../ >
- 倾斜效果 <SkewTransform.../ >
- 缩放效果 <ScaleTransform.../ >
这些效果可以叠加使用,可以把各种变形效果声明放在<TransformGroup.../ >中。
四种变形效果的功能说明如下:
RotateTransform 通过<RotateTransform... />的Angle属性来旋转一个角度;
TranslateTransform 通过<TranslateTransform.../ >的X和Y属性来指定对象的位移量;
SkewTransform 通过 <SkewTransform.../ >的AngleX与AngleY属性来指定一个倾斜角度;
ScaleTransform 通过<ScaleTransform.../ >的ScaleX和ScaleY属性来指定放大与缩小的倍数;
变形效果适用对象类型(参考Silverlight 1.0 HELP文档):
- 笔刷Brush
- SolidColorBrush
- LinearGradientBrush
- RadialGradientBrush
- ImageBrush
- VideoBrush
- 几何对象Geometry
- EllipseGeometry
- LineGeometry
- PathGeometry
- RectangleGeometry
- UIElement
- Canvas
- Ellipse
- Glyphs
- Image
- MediaElement
- Retangle
- Polygon
- Polyline
- Shape
- TextBlock
- Path
- Line
- InkPresener
- Run
下面一一介绍这些变换效果的重要属性。
RotateTransform
==================================
Angle 旋转角度
CenterX 旋转中心点横坐标
CenterY 旋转中心点纵坐标
以上三属性值都是Double型的;
基本语法:
<RotateTransform Angle="Double" CenterX="Double" CenterY="Double" />
==================================
ScaleTransform
==================================
ScaleX 沿X轴缩放的倍数
ScaleY 沿Y轴缩放的倍数
CenterX 缩放中心点横坐标
CenterY 缩放中心点纵坐标
以上四属性值都是Double型的;
基本语法:
<ScaleTransform ScaleX="Double" ScaleY="Double" CenterX="Double" CenterY="Double" />
==================================
SkewTransform
==================================
AngleX 沿X轴倾斜角度
AngleY 沿Y轴倾斜角度
CenterX 缩放中心点横坐标
CenterY 缩放中心点纵坐标
以上四属性值都是Double型的
基本语法:
<SkewTransform AngleX="Double" AngleY="Double" CenterX="Double" CenterY="Double" />
==================================
TranslateTransform
==================================
X 沿X轴位移量
Y 沿Y轴位移量
以上两属性值都是Double型的
基本语法:
<TranslateTransform X="Double" Y="Double" />
==================================
以下给出相应几例代码:
代码1 RotateTransform效果
==================================
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas Background="LightBlue" Width="300" Height="300">
<TextBlock Name="myTextBlock1" Canvas.Left="60" Canvas.Top="65"
FontFamily="Arial" FontStyle="Normal" FontSize="50" Foreground="silver"
Width="300" Height="300" TextWrapping="Wrap">
Microsoft
<TextBlock.RenderTransform>
<RotateTransform Angle="45" CenterX="50" CenterY="50" />
</TextBlock.RenderTransform>
</TextBlock>
</Canvas>
</Canvas>
==================================
ScaleTransform效果示例请参阅应用1-五星红旗
下面给出一ScaleTransform经典应用-倒影
==================================
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas Canvas.Left="40" Canvas.Top="50">
<!--TextBlock 1-->
<TextBlock Text="Microsoft" Foreground="Blue" FontSize="50"/>
<!--TextBlock 2-->
<TextBlock Text="Microsoft" Foreground="silver" Canvas.Top="135" FontSize="50">
<TextBlock.RenderTransform>
<ScaleTransform ScaleY="-1"/>
</TextBlock.RenderTransform>
</TextBlock>
</Canvas>
</Canvas>
==================================
代码3 SkewTransform效果
==================================
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas x:Name="parentCanvas">
<!--Original Text-->
<TextBlock Text="Microhoo" FontSize="30" Foreground="Black" Canvas.Left="100" Canvas.Top="30" />
<!--TextBlock 1-->
<TextBlock Text="Microhoo" FontSize="30" Foreground="Blue" Canvas.Left="120" Canvas.Top="80">
<TextBlock.RenderTransform>
<SkewTransform AngleX="-30"/>
</TextBlock.RenderTransform>
</TextBlock>
<!--TextBlock 2-->
<TextBlock Text="Microhoo" FontSize="30" Foreground="Red" Canvas.Left="80" Canvas.Top="130">
<TextBlock.RenderTransform>
<SkewTransform AngleX="30"/>
</TextBlock.RenderTransform>
</TextBlock>
<!--TextBlock 3-->
<TextBlock Text="Microhoo" FontSize="30" Foreground="Orange" Canvas.Left="80" Canvas.Top="180">
<TextBlock.RenderTransform>
<SkewTransform AngleX="30" AngleY="15"/>
</TextBlock.RenderTransform>
</TextBlock>
<!--TextBlock 4-->
<TextBlock Text="Microhoo" FontSize="30" Foreground="silver" Canvas.Left="80" Canvas.Top="230">
<TextBlock.RenderTransform>
<SkewTransform AngleY="-45"/>
</TextBlock.RenderTransform>
</TextBlock>
<!--TextBlock 5-->
<TextBlock Text="Microhoo" FontSize="30" Foreground="purple" Canvas.Left="80" Canvas.Top="130">
<TextBlock.RenderTransform>
<SkewTransform AngleY="45"/>
</TextBlock.RenderTransform>
</TextBlock>
</Canvas>
</Canvas>
==================================
代码4 TranslateTransform效果
==================================
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas >
<!--Image Origion-->
<Image Source="MyPic.jpg" Opacity="0.5">
<Image.RenderTransform>
<TranslateTransform X="0" Y="0"/>
</Image.RenderTransform>
</Image>
<!--Image Transalte-->
<Image Source="MyPic.jpg" >
<Image.RenderTransform>
<TranslateTransform X="100" Y="100"/>
</Image.RenderTransform>
</Image>
</Canvas>
</Canvas>
==================================
将以上四段代码,依次粘贴到入门1中的myxaml.xaml中,后双击SampleHTMLPage.html运行,即可看到结果。
我们也可以把多种变换效果放在一个效果群组中组合起来使用,这里使用TransformGroup来声明多个效果。
<TransformGroup>
<RotateTransform... />
<SkewTransform... />
<TranslateTransform... />
<ScaleTransform... />
</TransformGroup>
大家可以试着将上述几例修改后运行,看看组合效果的威力。
最后再介绍一个比较复杂的变换效果,叫做矩阵变换效果(MatrixTransform)。
实质上,所有的变换效果都是衍生于变换矩阵(Matrix),此矩阵是一3*3矩阵。各参数如下:
################################
M11 M12
Default: 1.0 Default: 0.0 0.0
################################
M12 M22
Default: 0.0 Default: 1.0 0.0
################################
OffsetX OffsetY
Default: 0.0 Default: 0.0 1.0
################################
其中第三列,0.0,0.0,1.0为常数列,这是因为Silverlight只支持仿射变换(affine transform),所以最后一列总是:0 0 1
通过以上矩阵信息我们可以验证得知,其实TranslateTransform效果相当于下列矩阵效果:
1 0 0
0 1 0
OffsetX OffsetY 1
其中OffsetX控制X轴的坐标位移,OffsetY控制Y轴的坐标位移
ScaleTransform效果相当于下列矩阵效果:
M11 0 0
0 M22 0
0 0 1
其中M11控制ScaleX,M22控制ScaleY
RotateTransform相当于下列矩阵效果:
cos(a) sin(a) 0
sin(-a) cos(a) 0
0 0 1
a是设置的旋转角度
SkewTransform相当于下列矩阵效果:
SkewX效果:
1 0 0
tan(a) 1 0
0 0 1
SkewY效果:
1 tan(a) 0
0 1 0
0 0 1
其中a是Skew的角度
大家可以设置不同的效果进行验证
锐意进取 大胆创新
蒙哥马利 朱
- 入门10-Transform(变换)的应用
- Transform的坐标变换注意事项
- Transform的坐标变换注意事项
- Transform变换
- Transform变换
- Transform(变换)
- 变换 transform
- transform函数的应用
- transform函数的应用
- CSS3 Transform的应用
- 关于transform的应用
- svg中transform的矩阵变换原理
- svg中transform的矩阵变换原理
- css3的3D transform变换
- Transform脚本控制游戏对象的变换
- 变换元素transform的那些事儿
- OpenCV中 变换模型求解的函数补充: 刚体变换(Rigid Transform)和仿射变换(Affine Transform)
- Schwartzian Transform(施瓦茨变换)
- 新鲜
- 联想收购摩托罗拉手机的六大优势
- struts标签引用的问题(急)
- 对Enterprise Architect菜单的汉化难忘经历
- 恢复Reflector反编译后资源文件的办法
- 入门10-Transform(变换)的应用
- Triangle mesh
- 如何用javascript实现设置IE“检查所存网页的较新版本”为“每次访问此页时检查”
- CSS开发手册
- 正则表达式概述
- [英语歌曲]孤独:Soledad
- 商务礼节最忌拖拉
- [英语阅读]新西兰全球首发“狗唱片”
- 守护爹爹 外孙希望你平平安安