原文:windows phone (16) UI变换 下

上一篇中说到四个变换类,都是比较简单的,这里要说到四个变换类,分别为:

MatrixTransfrom矩阵变换,一句标准矩阵表示的变换

TransformGroup 复合变换按照指定顺序将多个变换复合为一个变换

CompositeTransform组合变换按照固定顺序组合一系列变换

表示二维 x-y 平面使用 3x3 矩阵进行自定义变换,上一篇文章中的四个变换类都是基于此得到,MtrixTransForm类是通过矩阵算法运行得到相应的效果


  
  矩阵中第三列的值是固定不变的!

  原理:
  原坐标(x0,y0)通过这个3*3矩阵得到变换之后的新坐标(x1,y1)的过程如下:

    [x0,y0] *,通过矩阵乘法可得到坐标 (x0 * M11+x0 * M21,y0 * M12+y0 * M22)之后,再加上 (OffsetX,OffsetY) 即可得到新坐标(x1,y1)。也即是说最终坐标 (x1,y1) : x1 =  x0 * M11 + x0 * M21 + OffsetX , y1 = y0 * M12 + y0 * M22 + OffsetY.

1 <!--源码用法--> 2 3 <MatrixTransform Matrix="M11 M12 M21 M22 OffsetX OffsetY"></MatrixTransform>

示例:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">            <!--<TextBlock x:Name="tb1" FontSize="72" HorizontalAlignment="Center" VerticalAlignment="Center" Text="变换文字示例"  Foreground="Cyan"></TextBlock>-->            <TextBlock x:Name="tbShow" FontSize="72" VerticalAlignment="Center" HorizontalAlignment="Center" Text="变换文字示例"  Foreground="Cyan">                <TextBlock.RenderTransform>                    <MatrixTransform Matrix="0,1,2,1,2,2"></MatrixTransform>                </TextBlock.RenderTransform>            </TextBlock>        </Grid>

效果:

总结规律得到

        m11 ——X轴缩放
        m12 ——Y轴上倾斜
        m21 ——X轴上倾斜
        m22——Y轴缩放
        offsetX ——X轴上的位移
        offsetY ——Y轴上的位移

部分参考:http://www.cnblogs.com/crazypig/archive/2012/02/20/2359599.html

http://www.oschina.net/question/213217_49488

表示对变换效果的一种复合,在TransformGroup中可以包含其他的变换,当然也嵌套TransformGroup

代码:

 <!--ContentPanel - TransformGroup-->        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">            <TextBlock x:Name="tbShow" FontSize="72" VerticalAlignment="Center" HorizontalAlignment="Center" Text="变换文字示例"  Foreground="Cyan">                <TextBlock.RenderTransform>                    <TransformGroup>                        <TranslateTransform  X="-2" Y="3"></TranslateTransform>                        <ScaleTransform ScaleX="0.8" ScaleY="0.9"></ScaleTransform>                        <RotateTransform Angle="23"></RotateTransform>                        <TransformGroup>                            <MatrixTransform Matrix="1,0,1,1,0,1"></MatrixTransform>                        </TransformGroup>                    </TransformGroup>                </TextBlock.RenderTransform>            </TextBlock>        </Grid>

这里需要注意的是我们在定义变换的顺序,因为每个变换都是基于上一个变换的基础进行变换,效果:

是表示对变换的一种组合,并且具有顺序性,所有的变换都是通过属性进行设置的

        <!--ContentPanel - CompositeTransform-->        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">            <TextBlock x:Name="tbShow" FontSize="72" VerticalAlignment="Center" HorizontalAlignment="Center" Text="变换文字示例"  Foreground="Cyan">                <TextBlock.RenderTransform>                    <CompositeTransform Rotation="23" TranslateX="-2" TranslateY="3" ScaleX="0.8" ScaleY="0.9" ></CompositeTransform>                </TextBlock.RenderTransform>            </TextBlock>        </Grid>

上面代码中用到属性的意思Rotation表示旋转的角度,TranslateX表示在X轴平移的位置量,TranslateY表示在Y轴平移的位置量,ScaleX表示在X轴缩放的尺寸,ScaleY表示在Y轴缩放的尺寸;

效果:

TransformGroup和CompositeTransfom异同:两者可以设置相同的属性得到相同的效果,在TransformGroup中我们可以使用TransformGroup进行相同变换的多次使用,但是在CompositeTransfom中使用属性是不允许的,还有就是在TransformGroup我们可以使用自定义变换MatrixTransfrom,但是在组合变换CompositeTransfom中并没有该属性;两者还需要注意的是顺序性,不同的顺序,实现的效果不同;

windows phone (16) UI变换 下的更多相关文章

  1. windows phone (15) UI变换上

    原文:windows phone (15) UI变换上 在wp中只要是继承自UIElement 的任何对象都可以应用变换,当然包含Textblock,Rectangle等所有的元素,下面我们使用Tex ...

  2. 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画)

    [源码下载] 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画) 作者:webabcd 介绍背水一战 Windows 10 之 动画 PopInThemeA ...

  3. 背水一战 Windows 10 (5) - UI: 标题栏

    [源码下载] 背水一战 Windows 10 (5) - UI: 标题栏 作者:webabcd 介绍背水一战 Windows 10 之 UI 标题栏 示例TitleBarDemo.xaml <P ...

  4. 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸

    [源码下载] 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸 作者:webabcd 介绍背水一战 Windows 10 之 UI 窗口全屏 窗口尺寸 示例1.窗口全屏UI/F ...

  5. 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成

    原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..." ...

  6. Windows + Ubuntu 16.04 双系统安装详细教程

    Windows + Ubuntu 16.04 双系统安装详细教程 2018年01月28日 16:43:19 flyyufenfei 阅读数:165619   发现了一篇好教程,果断转载了,以后用得着时 ...

  7. Windows环境和Linux环境下Redis主从复制配置

    Windows环境下和Linux环境下配置Redis主从复制基本上一样,都是更改配置文件.Windows环境下修改的配置文件是:redis.windows.conf.redis.windows-ser ...

  8. 【windwos 操作系统】关键的Windows内核数据结构一览(下)

    I/O管理器 nt!_IRP IRP表示一个I/O请求包结构体,它用来封装执行一个特定I/O操作所需要的所有参数以及I/O操作的状态.IRP的表现也类似于一个线程独立调用栈因此它可以从一个线程传递到另 ...

  9. 背水一战 Windows 10 (4) - UI: 多窗口

    [源码下载] 背水一战 Windows 10 (4) - UI: 多窗口 作者:webabcd 介绍背水一战 Windows 10 之 UI 多窗口 示例1.自定义帮助类,用于简化 Secondary ...

随机推荐

  1. uploadify,实际开发案例【选择完文件点击上传才上传】

    <script type="text/javascript"> )+Math.floor(Math.random()*)+']-'; //设置随机文件前缀. $k(fu ...

  2. Visual Studio的SDK配置

    Visual Studio的SDK Visual Studio 6.0自带的SDK是1998年的,目录为C:\Program Files\Microsoft Visual Studio\VC98\,这 ...

  3. Android应用开发学习笔记之播放视频

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 在Android中,我们可以通过使用VideoView类或者MediaPlayer类来播放视频. 一.使用Video ...

  4. Hibernate4读取Clob数据

    package cn.framework.dao.impl; import java.io.BufferedReader; import java.io.IOException; import jav ...

  5. GitHub上项目配置和导入eclispe的问题解决

    在github上下载的工程文件导入的时候总是遇到各种各样的问题,昨天晚上瞎忙一晚上查资料没搞定.早上找高手请教了一下,一起弄了好一会终于解决了,这里记录一下方法解决的具体方法步骤. 本方法适用于离线导 ...

  6. ExtJs4 笔记(5) Ext.Button 按钮

    id="li2"></li> <li id="li3"></li> </ul> </div> ...

  7. HDU 1142 A Walk Through the Forest(dijkstra+记忆化DFS)

    题意: 给你一个图,找最短路.但是有个非一般的的条件:如果a,b之间有路,且你选择要走这条路,那么必须保证a到终点的所有路都小于b到终点的一条路.问满足这样的路径条数 有多少,噶呜~~题意是搜了解题报 ...

  8. 使用PageHeap.EXE或GFlags.EXE检查内存越界错误

    必先利其器之一:使用PageHeap.EXE或GFlags.EXE检查内存越界错误 Article last modified on 2002-6-3 ------------------------ ...

  9. Socket编程之聊天程序 - 模拟Fins/ModBus协议通信过程

    设备控制软件编程涉及到的基本通信方式主要有TCP/IP与串口,用到的数据通信协议有Fins与ModBus. 更高级别的通信如.net中的Remoting与WCF在进行C/S架构软件开发时会采用. 本篇 ...

  10. Memcached 群集高可用性(HA)架构

    Memcache本身并不实现集群功能.假设你想使用Memcahce集群需要使用第三方软件或编程来实现自己的设计,这里将被用来memagent实现代理,memagent也被称为magent.我们注意到, ...