[源码下载]

背水一战 Windows 10 (71) - 控件(控件基类): UIElement - RenderTransform(2D变换), Clip(剪裁)

作者:webabcd

介绍
背水一战 Windows 10 之 控件(控件基类 - UIElement)

  • RenderTransform(2D变换)
  • Clip(剪裁)

示例
1、演示 UIElement 的 2D 变换的应用
Controls/BaseControl/UIElementDemo/RenderTransformDemo.xaml

<Page
x:Class="Windows10.Controls.BaseControl.UIElementDemo.RenderTransformDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Controls.BaseControl.UIElementDemo"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<Grid Margin="10 0 10 10"> <!--
RenderTransform - 2D 变换(位移,旋转,缩放,扭曲等)
--> <Grid HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3">
<Rectangle.RenderTransform> <!--RotateTransform - 旋转变换(顺时针)-->
<!--
Angle - 旋转角度。默认值 0
CenterX - 旋转中心点的 X 轴坐标。默认值 0
CenterY - 旋转中心点的 Y 轴坐标。默认值 0
-->
<RotateTransform Angle="15" CenterX="100" CenterY="50" /> </Rectangle.RenderTransform>
</Rectangle>
</Grid> <Grid Margin="400 0 0 0" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<!--
RenderTransformOrigin - 位置变换的中心点(这是一个相对值,元素左上角为 0,0,元素右下角为 1,1,支持小于 0 或大于 1 的值)
这个值是 Point 类型,在 xaml 中可以用逗号或空格分隔
-->
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3" RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<RotateTransform Angle="15" />
</Rectangle.RenderTransform>
</Rectangle>
</Grid> <Grid Margin="800 0 0 0" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3">
<Rectangle.RenderTransform> <!--TranslateTransform - 平移变换-->
<!--
X - 水平方向上移动的距离。默认值 0
Y - 垂直方向上移动的距离。默认值 0
-->
<TranslateTransform X="100" Y="10" /> </Rectangle.RenderTransform>
</Rectangle>
</Grid> <Grid Margin="0 200 0 0" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3">
<Rectangle.RenderTransform> <!--ScaleTransform - 缩放变换-->
<!--
ScaleX - X 轴方向上缩放的倍数。默认值 1
ScaleY - Y 轴方向上缩放的倍数。默认值 1
CenterX - 缩放中心点的 X 轴坐标。默认值 0
CenterY - 缩放中心点的 Y 轴坐标。默认值 0
-->
<ScaleTransform ScaleX="1.1" ScaleY="1.3" CenterX="100" CenterY="50" /> </Rectangle.RenderTransform>
</Rectangle>
</Grid> <Grid Margin="400 200 0 0" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3">
<Rectangle.RenderTransform> <!--SkewTransform - 扭曲变换(典型应用:在 二维 对象中模拟 三维 深度)-->
<!--
CenterX - 扭曲中心点的 X 轴坐标。默认值 0
CenterY - 扭曲中心点的 Y 轴坐标。默认值 0
AngleX - X 轴扭曲角度,Y 轴绕原点旋转(逆时针)。CenterX 对此值所产生的呈现结果没有影响。默认值 0
AngleY - Y 轴扭曲角度,X 轴绕原点旋转(顺时针)。CenterY 对此值所产生的呈现结果没有影响。默认值 0
-->
<SkewTransform AngleX="30" AngleY="5" CenterX="0" CenterY="0" /> </Rectangle.RenderTransform>
</Rectangle>
</Grid> <Grid Margin="800 200 0 0" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3">
<Rectangle.RenderTransform> <!--TransformGroup - 多个 Transform 组成的复合变换-->
<TransformGroup>
<TranslateTransform X="100" Y="10" />
<RotateTransform Angle="15" CenterX="100" CenterY="50" />
</TransformGroup> </Rectangle.RenderTransform>
</Rectangle>
</Grid> <!--
CompositeTransform - 将多种变换方式合而为一
CenterX - 变换中心点的 X 坐标
CenterY - 变换中心点的 Y 坐标
Rotation - 顺时针旋转角度
ScaleX - 沿 X 轴方向上的缩放比例
ScaleY - 沿 Y 轴方向上的缩放比例
SkewX - X 轴扭曲角度
SkewY - Y 轴扭曲角度
TranslateX - 沿 X 轴方向上的平移距离
TranslateY - 沿 Y 轴方向上的平移距离
-->
<Grid Margin="0 400 0 0" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3">
<Rectangle.RenderTransform>
<CompositeTransform SkewX="30" Rotation="60" ScaleX="0.6" ScaleY="0.3" />
</Rectangle.RenderTransform>
</Rectangle>
</Grid> <!--
MatrixTransform - 仿射矩阵变换 |X| |M11(默认值 1) M21(默认值 0) 0|
|Y| = |x y 1| * |M12(默认值 0) M22(默认值 1) 0|
|1| |OffsetX(默认值 0) OffsetY(默认值 0) 1| X = x * M11 + y * M12 + OffsetX
Y = x * M21 + y * M22 + OffsetY 利用 MatrixTransform 实现平移、旋转、缩放、扭曲的 Demo 详见 http://www.cnblogs.com/webabcd/archive/2008/11/03/1325150.html
-->
<Grid Margin="400 400 0 0" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3">
<Rectangle.RenderTransform>
<!--
m11, m12, m21, m22, offsetX, offsetY
-->
<MatrixTransform Matrix="1, 0.5, 0, 1, 30, 10" />
</Rectangle.RenderTransform>
</Rectangle>
</Grid> </Grid>
</Grid>
</Page>

Controls/BaseControl/UIElementDemo/RenderTransformDemo.xaml.cs

/*
* UIElement - UIElement(继承自 DependencyObject, 请参见 /Controls/BaseControl/DependencyObjectDemo/)
* RenderTransform - 2D 变换(位移,旋转,缩放,扭曲等)
* RenderTransformOrigin - 2D 变换的原点(这是一个相对值,元素左上角为 0,0,元素右下角为 1,1,支持小于 0 或大于 1 的值)
*
*
* 本例用于演示 UIElement 的 2D 变换的应用
*/ using Windows.UI.Xaml.Controls; namespace Windows10.Controls.BaseControl.UIElementDemo
{
public sealed partial class RenderTransformDemo : Page
{
public RenderTransformDemo()
{
this.InitializeComponent();
}
}
}

2、演示 UIElement 的 Clip 的应用
Controls/BaseControl/UIElementDemo/ClipDemo.xaml

<Page
x:Class="Windows10.Controls.BaseControl.UIElementDemo.ClipDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.Controls.BaseControl.UIElementDemo"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="10 0 10 10"> <Grid HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle Width="200" Height="100" Fill="Red" />
<Rectangle Width="200" Height="100" Fill="Green"> <!--
Clip - 剪裁 UIElement 的指定区域(即让 UIElement 的指定区域变为透明) 注:目前只能通过 RectangleGeometry 剪裁 UIElement
-->
<Rectangle.Clip>
<RectangleGeometry Rect="10 10 50 50" />
</Rectangle.Clip>
</Rectangle>
</Grid> </StackPanel>
</Grid>
</Page>

Controls/BaseControl/UIElementDemo/ClipDemo.xaml.cs

/*
* UIElement - UIElement(继承自 DependencyObject, 请参见 /Controls/BaseControl/DependencyObjectDemo/)
* Clip - 剪裁 UIElement 的指定区域(目前只支持通过 RectangleGeometry 剪裁 UIElement)
*
*
* 本例用于演示 UIElement 的 Clip 的应用
*/ using Windows.UI.Xaml.Controls; namespace Windows10.Controls.BaseControl.UIElementDemo
{
public sealed partial class ClipDemo : Page
{
public ClipDemo()
{
this.InitializeComponent();
}
}
}

OK
[源码下载]

背水一战 Windows 10 (71) - 控件(控件基类): UIElement - RenderTransform(2D变换), Clip(剪裁)的更多相关文章

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

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

  2. 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog

    [源码下载] 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog 作者:webabcd 介绍背水一战 Windows 10 之 控 ...

  3. 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu

    [源码下载] 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu 作者:webabcd 介绍背水一战 Windows 10 之 控件(弹 ...

  4. 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout

    [源码下载] 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout 作者:webabcd 介绍背水一战 Windows 10 之 ...

  5. 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing

    [源码下载] 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing 作者:webabcd 介绍背水一 ...

  6. 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch

    [源码下载] 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch 作者:webabcd 介绍背水一 ...

  7. 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox

    [源码下载] 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(选择类) Sel ...

  8. 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton

    [源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...

  9. 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox

    [源码下载] 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) AutoSug ...

随机推荐

  1. poi横纵动态导入

    dao层 <insert id ="saveInTarget" parameterType="java.util.List" > INSERT IN ...

  2. Mybatis Generator 生成的mapper只有insert方法

    一般有两种情况 第一种是配置问题可以参考博客 http://blog.csdn.net/angel_xiaa/article/details/52474022 第二种是mysql-connector- ...

  3. 最适合入门的Laravel中级教程(一)

    Laravel 是一个全栈框架: 我们使用 Laravel 开发业务常见有 3 个方向: 前端页面和后端逻辑混合的应用 主要是面向对 SEO 有需求的项目: 比如说新闻资讯博客文章等: 一般在控制器中 ...

  4. Cuda9.2发布

    经过一次跳票,没有很多人注意(才怪)的cuda9.2终于发布了,官方介绍如下: CUDA 9.2 includes updates to libraries, a new library for ac ...

  5. R语言-散点图进阶

    1.分组散点图 ①xyplot()函数 > library(lattice) > xyplot(mpg~disp, #定义Y~X轴 + data=mtcars, + groups=cyl, ...

  6. 合并数组,改变原数组apply与不改变原数组

    一看见合并数组,可能第一反应就是concat,concat确实具有我们想要的行为,但它实际上并不附加到现有数组,而是创建并返回一个新数组. 同样你也许会想到ES6的扩展运算符...         但 ...

  7. HttpRunnerManager安装部署

    uname -a cat /etc/redhat-release 1.安装docker.mysql.rabbitmq sudo yum update curl -fsSL https://get.do ...

  8. 安全运维之:Linux后门入侵检测工具的使用

    安全运维之:Linux后门入侵检测工具的使用 https://blog.csdn.net/exitgogo/article/details/39547113

  9. 【VBA】ExcelファイルのOpen

    ※変数の定義を強制する方法: 一番上に.「Option Explicit」を追加して.変数の定義が必須となる. ソース Private Sub CommandButton2_Click() //スクリ ...

  10. mysql学习笔记--列属性

    一.是否为空----null || not null 二.默认值----default 三.自动增长----auto_increment 四.主键----primary key 1. 主键:唯一标识表 ...