关于变换中心的问题
CenterX和CenterY应该可以定义变换的中心吧,但是我下面的代码把CenterX="0.5" CenterY="0.5" 改成CenterX="1"和CenterY="1",效果是一样的,似乎CenterX和CenterY没什么用???哪个好心人帮我看看吧,费不了几分钟的,谢了。。。<Border Background="White" Height="130" Width="220" Canvas.Left="50" Canvas.Top="308">
<Border.RenderTransform>
<TransformGroup >
<ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.5" ScaleY="1.5"/>
<RotateTransform CenterX="0.5" CenterY="0.5" Angle ="45"/>
</TransformGroup>
</Border.RenderTransform>
</Border>
另外,我用RenderTransformOrigin="0.5,0.5"倒是可以,这两者有什么区别?:eek: 直接在XAML中修改CenterX和CenterY的值效果是一样的.
只是没有实时反映在设计界面.
你可以手动刷新一下设计界面,比如切换一下界面/放大缩小界面等.
不是设计界面的问题
应该不是你说的这样,设计界面可能有不能实时反应的问题,但是我运行过的,和另一个CenterX="1",CenterY="1"的Border没有区别,不管怎样,谢谢回复呵呵。。。[quote]原帖由 [i]langmuir[/i] 于 2008-6-17 14:06 发表 [url=http://bbs.blueidea.com/redirect.php?goto=findpost&pid=4064091&ptid=2864677][img]http://bbs.blueidea.com/images/common/back.gif[/img][/url]
直接在XAML中修改CenterX和CenterY的值效果是一样的.
只是没有实时反映在设计界面.
你可以手动刷新一下设计界面,比如切换一下界面/放大缩小界面等. [/quote]
其他人有知道怎么回事的吗? RenderTransformOrigin不会TranslateTransform的外观产生任何影响.
看下面的代码,两者外观是一样的.
[code]<Rectangle RenderTransformOrigin="10, 0" Fill="#FFFF0404" Stroke="#FF000000" Width="96" Height="88" Canvas.Left="80" Canvas.Top="80" >
<Rectangle.RenderTransform>
<TranslateTransform X="50" Y="0" />
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Fill="#FFFF0404" Stroke="#FF000000" Width="96" Height="88" Canvas.Left="80" Canvas.Top="80" >
<Rectangle.RenderTransform>
<TranslateTransform X="50" Y="0" />
</Rectangle.RenderTransform>
</Rectangle>[/code]
[[i] 本帖最后由 langmuir 于 2008-6-17 15:22 编辑 [/i]]
your answer is right,but not what I asked...
你说的对,“RenderTransformOrigin不会TranslateTransform的外观产生任何影响.”,不过我是想探讨下CenterX,CenterY和RenderTransformOrigin属性的区别,比如下面三个Border,中间的是正常的,左右两边分别通过设置CenterX,CenterY和设置RenderTransformOrigin想实现ScaleTransform沿着中心放大,但只有设置RenderTransformOrigin才能实现,设置CenterX和CenterY似乎无效,这就是我的困惑呵呵。。。<Grid x:Name="LayoutRoot" Background="White">
<!--设置CenterX="0.5" CenterY="0.5"-->
<Border HorizontalAlignment="Left" Margin="85,170,0,232" VerticalAlignment="Stretch" Width="105" Background="#FFECA1A1">
<Border.RenderTransform>
<TransformGroup >
<ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.5" ScaleY="1.5"/>
</TransformGroup>
</Border.RenderTransform>
</Border>
<!--参照的Border-->
<Border HorizontalAlignment="Left" Margin="281,170,0,232" VerticalAlignment="Stretch" Width="105" Background="#FFECA1A1"/>
<!--设置RenderTransformOrigin="0.5,0.5"-->
<Border HorizontalAlignment="Right" Margin="0,170,222,232" VerticalAlignment="Stretch" Background="#FFECA1A1" Width="105" RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TransformGroup >
<ScaleTransform ScaleX="1.5" ScaleY="1.5"/>
</TransformGroup>
</Border.RenderTransform>
</Border>
</Grid>
[quote]原帖由 [i]langmuir[/i] 于 2008-6-17 14:35 发表 [url=http://bbs.blueidea.com/redirect.php?goto=findpost&pid=4064169&ptid=2864677][img]http://bbs.blueidea.com/images/common/back.gif[/img][/url]
RenderTransformOrigin不会TranslateTransform的外观产生任何影响.
看下面的代码,两者外观是一样的.
RenderTransformOriginsh设置的是一个原点值,提供TranslateTransform ... [/quote]
[[i] 本帖最后由 ptxfp 于 2008-6-17 15:21 编辑 [/i]] RenderTransformOrigin就是用来声明呈现转换的中心点.是一个相对于对象的绝对坐标.
实现ScaleTransform沿着某一中心放大或缩小,需要设置的就是RenderTransformOrigin的坐标值.
如沿对象左上角变化,就需要设置为(0,0).沿中心变化,设置为(0.5,0.5).
CenterX和CenterY是用作定义对象相对于画布的位置,与呈现转换无关.
页:
[1]