Transform详解,以及UIElement和FrameworkElement的常用属性

介绍
Silverlight 2.0 其它:
RenderTransform - 呈现位置的转换(System.Windows.Media.Transform类型)
TranslateTransform - 平移转换
RotateTransform - 旋转转换(顺时针)
ScaleTransform - 缩放转换
SkewTransform - 扭曲转换
MatrixTransform - 仿射矩阵变换
TransformGroup - 多个 Transform 组成的复合转换
RenderTransformOrigin - 位置转换的中心点
Clip - 容器的剪辑区域(System.Windows.Media.Geometry类型)
IsHitTestVisible - 命中测试是否可见
Opacity - 不透明度。0 - 1之间
OpacityMask - 不透明蒙版(遮罩)(System.Windows.Media.Brush类型)
UseLayoutRounding - 是否使用完整像素布局
Cursor - 鼠标移动到 FrameworkElement 上面时,鼠标指针的样式
Margin - 容器边缘与边缘之外的空白距离(像素值:上下左右;左右,上下;左,上,右,下)
Tag - 保存一些额外的信息(System.Object类型)

 

示例
1、Transform.xaml

<UserControl x:Class="Silverlight20.Other.Transform"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel HorizontalAlignment="Left">

<!--
RenderTransform - 呈现位置的转换(System.Windows.Media.Transform类型)
RenderTransformOrigin - 位置转换的中心点
-->

<Grid Margin="20">
<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="20">
<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="20">
<Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
<!--
RenderTransformOrigin - 位置转换的中心点
-->
<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="20">
<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="20">
<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="20">
<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>


<!--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
-->
<Grid Margin="20">
<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>
<MatrixTransform>
<MatrixTransform.Matrix >

<!--仿射矩阵中的 平移转换-->
<!--
OffsetX - 水平位移
OffsetY - 垂直位移
-->
<Matrix OffsetX="100" OffsetY="10" />

</MatrixTransform.Matrix>
</MatrixTransform>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>

<Grid Margin="20">
<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" RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<MatrixTransform>
<MatrixTransform.Matrix >

<!--仿射矩阵中的 缩放转换-->
<!--
M11 - 水平放大倍数
M22 - 垂直放大倍数
-->
<Matrix M11="1.1" M22="1.3" />

</MatrixTransform.Matrix>
</MatrixTransform>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>

<Grid Margin="20">
<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>
<MatrixTransform>
<MatrixTransform.Matrix >

<!--仿射矩阵中的 扭曲转换-->
<!--
M21 - X 轴扭曲角度,Y 轴绕原点旋转(逆时针)。tanθ(本例中θ等于30度)
M12 - Y 轴扭曲角度,X 轴绕原点旋转(顺时针)。tanθ(本例中θ等于5度)
-->
<Matrix M21="0.577350269189626" M12="0.087488663525924" />

</MatrixTransform.Matrix>
</MatrixTransform>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>

<Grid Margin="20">
<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" RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<MatrixTransform>
<MatrixTransform.Matrix >

<!--仿射矩阵中的 旋转转换-->
<!--
|cosθ sinθ 0|
|-sinθ cosθ 0|
|0 0 1|
注:本例中的θ角等于15度
-->
<Matrix M11="0.965925826289068" M12="0.258819045102521" M21="-0.258819045102521" M22="0.965925826289068" />

</MatrixTransform.Matrix>
</MatrixTransform>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
</StackPanel>
</UserControl>

 

 

UIElement

<UserControl x:Class="Silverlight20.Other.UIElement"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel HorizontalAlignment="Left">

<Grid Margin="20">
<Rectangle Width="200" Height="100" Fill="Green" Stroke="Blue" StrokeThickness="3" />
<Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3">

<!--
Clip - 容器的剪辑区域(System.Windows.Media.Geometry类型)
-->
<Rectangle.Clip>
<EllipseGeometry Center="200,100" RadiusX="100" RadiusY="50" />
</Rectangle.Clip>
</Rectangle>
</Grid>

<Grid Margin="20">

<!--
IsHitTestVisible - 命中测试是否可见。如果设置为False,则无法响应Click事件
-->
<Button x:Name="btnTest" Width="200" Content="关闭了HitTest的按钮" Click="btnTest_Click" IsHitTestVisible="False" />
</Grid>


<Grid Margin="20">

<!--
Opacity - 不透明度。0 - 1之间
-->
<Image Source="/Silverlight20;component/Images/Logo.jpg" Height="100" Opacity="0.3" />
</Grid>

<Grid Margin="20">
<Image Source="/Silverlight20;component/Images/Logo.jpg" Height="100">

<!--
OpacityMask - 不透明蒙版(遮罩)(System.Windows.Media.Brush类型)
-->
<Image.OpacityMask>
<RadialGradientBrush Center="0.5,0.5">
<GradientStop Color="#FF000000" Offset="0" />
<GradientStop Color="#44000000" Offset="0.8" />
<GradientStop Color="#00000000" Offset="1" />
</RadialGradientBrush>
</Image.OpacityMask>
</Image>
</Grid>

<Grid Margin="20">
<StackPanel>

<!--
UseLayoutRounding - 是否使用完整像素布局。默认值为 true
举例:如果设置了Margin="1.6"(非完整像素)
那么UseLayoutRounding="true"时,则容器的外边距不相等;UseLayoutRounding="false"时,则容器的外边距相等
-->
<Grid Width="20" Height="20" Margin="5" UseLayoutRounding="True">
<Border BorderBrush="#FF884909" Background="#FFFBECA3" BorderThickness="1"></Border>
<Border BorderBrush="#FF884909" Background="#FFFBECA3" BorderThickness="1" Margin="1.6"></Border>
</Grid>

<Grid Width="20" Height="20" Margin="5" UseLayoutRounding="False">
<Border BorderBrush="#FF884909" Background="#FFFBECA3" BorderThickness="1"></Border>
<Border BorderBrush="#FF884909" Background="#FFFBECA3" BorderThickness="1" Margin="1.6"></Border>
</Grid>
</StackPanel>
</Grid>

</StackPanel>
</UserControl>

 

 

<UserControl x:Class="Silverlight20.Other.FrameworkElement"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel HorizontalAlignment="Left" >

<!--
Cursor - 鼠标移动到 FrameworkElement 上面时,鼠标指针的样式
Arrow - 箭头
Hand - 手形
Wait - 沙漏
IBeam - “I”字形
Stylus - 点
Eraser - 橡皮
None - 无
Margin - 容器边缘与边缘之外的空白距离(像素值:上下左右;左右,上下;左,上,右,下)
Tag - 保存一些额外的信息(System.Object类型)
-->
<Rectangle Width="200" Height="100" Fill="Red" Cursor="IBeam" Margin="5" Tag="1234" />

</StackPanel>
</UserControl>

 

 

摘自:http://www.cnblogs.com/webabcd/archive/2008/11/03/1325150.html
3、FrameworkElement.xaml



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值