通过变换,可以为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

转载于:https://www.cnblogs.com/xmfdsh/p/3742743.html

Sliverlight变换特性相关推荐

  1. 傅里叶变换尺度变换性质_傅里叶变换的时移特性和尺度变换特性

    信号专栏15期.大道至简,心诚则灵!和我们一起轻松学懂信号! 在13期中,我们提到:信号与系统课程的三大变换(傅里叶变换.拉普拉斯变换和z变换)中,傅里叶变换无疑是最为重要的变换,而傅里叶变换的性质又 ...

  2. matlab实现周期阶跃函数,连续时间信号傅利叶变换与MATLAB实现.doc

    Matlab应用实践课程设计 PAGE PAGE 22 - 课程设计任务书 学生姓名: 潘少俊 专业班级:电子科学与技术0701 班 指导教师:梁小宇 工作单位:信息工程学院 题 目: 连续时间信号的 ...

  3. matlab中频域信号IFFT,MATLAB中ifft函数用法、性质、特性-以及与fft的组合应用全面深入解析(含程序)...

    MATLAB中ifft函数用法.性质.特性,以及与fft的组合应用全面深入解析(含程序) 前言 在我之前的<MATLAB中fft函数用法.性质.特性.缺陷全面深入解析(含程序)>中,我已经 ...

  4. (转)连续信号(八)| 傅里叶变换的性质 | 积分、微分特性 + 时域、频域卷积 + 帕斯瓦尔

    最近长时间受困扰.为方便找寻转载学习一下.傅里叶变换使任一信号可以有两种描述形式:时域描述和频域描述. 1. 线性 2. 奇偶性 3. 对偶性 4. 尺度变换特性 这一性质表明,在时域上将信号x ( ...

  5. 二维平移旋转变换及其特性

    文章目录 平移矩阵 基本旋转矩阵(绕原点) 旋转矩阵(绕任意点) 刚体变换特性 平移矩阵 假设延x轴平移txt_xtx​,延y轴平移tyt_yty​距离,显然: x′=x+txx' = x + t_x ...

  6. 功率谱和FFT变换频谱

    功率谱: nfft=length(total_wave); window1=hamming(100); %海明窗 noverlap=20; %数据无重叠 range='onesided'; %频率间隔 ...

  7. matlab1信号的单边z变换:,信号与系统 第4版 [徐亚宁] 2016年版

    信号与系统 第4版 出版时间: 2016年版 内容简介 本教材以"易学易教和强化培养学生的工程能力和创新能力"为出发点,详细介绍了信号分析与系统分析的基本概念.基本理论和基本方法, ...

  8. 领悟《信号与系统》之 傅立叶变换的性质与应用

    傅立叶变换的性质与应用 一.傅里叶变换性质表 二.傅里叶性质详细 1. 线性性质 2. 尺度变换特性 3. 时移特性 4. 频移特性 5. 时域微分特性 6. 频域微分特性 7. 时域积分特性 8. ...

  9. 「技术综述」一文道尽传统图像降噪方法

    https://www.toutiao.com/a6713171323893318151/ 作者 | 黄小邪/言有三 编辑 | 黄小邪/言有三 图像预处理算法的好坏直接关系到后续图像处理的效果,如图像 ...

最新文章

  1. 李彦宏为什么被称为AI先生,美国权威媒体给出答案
  2. 北恒生物获德诚资本约1亿元A轮融资,德诚资本投资
  3. 关于JAVA调用dll的学习总结
  4. JAVA编程TXT文件_java读写txt文件的方法
  5. zkcli远程连接_ZooKeeper 学习笔记(二)-API 操作和应用
  6. 计算机组成原理延迟时间ty,计算机组成原理之数值的机器运算培训教程方案.ppt...
  7. 微信公众平台开发(44)历史上的今天
  8. 线性方程组 python_线性方程组的表示 使用Python的线性代数
  9. postman-SSL证书问题-支持HTTPS请求
  10. 网络工程师试题(二)2020-12-8
  11. 谷歌翻译退出中国后如何恢复 Chrome 浏览器翻译的正常使用
  12. Java 使用POI 给Word添加水印
  13. Vue3+TypeScript
  14. 朴素贝叶斯的概念简介
  15. 使用python对单幅图像进行数据增并保存增强后的结果
  16. 分析非结构化数据的10个步骤
  17. 如何通过限制 IP 相关信息 | 控制用户访问站点频率
  18. 软考高级系统架构设计师论文系列三:论改进Web服务器性能的有关技术
  19. PRO-seq数据分析
  20. Qualcomm NPU 高通神经网络处理芯片

热门文章

  1. tomcat中间件的默认端口号_Tomcat下载安装及配置
  2. linux 配置 java tomcat,Linux配置Tomcat和JDK
  3. Linux3种进程,linux内核获取进程的全路径3种方法
  4. Java多线程下载并具断点续传功能JAR
  5. WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类
  6. 无心剑中译迪米特利·马丁《我是谁》
  7. 大数据学习笔记:HBase Shell操作
  8. 安卓学习笔记06:Activity生命周期与启动模式
  9. Java实训项目1:GUI学生信息管理系统 - 实训概述
  10. 英语学习笔记2019-11-01