2015-09-23 78 views
0

我想在WPF的动画,这在2矩形一起放大象下面这样:动画2矩形一起

在放大之前有没有办法将它们组合在一起吗?

from this smaller image 

from this smaller image

to this bigger one 

enter image description here

或者,我可以将它们合并成1个RECT我做动画缩放过吗?

--------------------- update ------------------------ ----

没有人回答我的问题:(但我自己找到解决方案,也许这不是最好的解决方案,但它的工作原理,而不是把2个矩形放在一起,我只是把它们放在画布上,并在画布上制作动画

回答

1

答案是这样的,C#比以XAML为主。

向ScaleTransform和Slider提供名称以在代码中处理它们。 没有数据绑定。

<Canvas x:Name="root" Margin="20 20" RenderTransformOrigin="0,0" > 
    <Canvas.RenderTransform> 
     <TransformGroup> 
      <!--ScaleX="{Binding ElementName=sliderScale, Path=Value}" ScaleY="{Binding ElementName=sliderScale, Path=Value}"--> 
      <ScaleTransform x:Name="scaleTransform" /> 
     </TransformGroup> 
    </Canvas.RenderTransform> 
    <Rectangle Fill="Red" Stroke="Black" Width="200" Height="200"/> 
    <Rectangle Canvas.Top="20" Canvas.Left="20" Stroke="Black" Fill="Green" Width="100" Height="100"/> 
</Canvas> 
    <Slider x:Name="sliderScale" 
     ValueChanged="SliderScaleValueChanged" 
     Canvas.Left="35" Canvas.Top="251" Height="25" Width="273" Value="1" Maximum="2" Margin="74,249,170,45"/> 

一个的ValueChanged回调改变画布上的尺度变换拿着矩形:

private void SliderScaleValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
{ 
    scaleTransform.ScaleX = 
    scaleTransform.ScaleY = sliderScale.Value; 
} 

随着第一XAML的答案,而第二多个C#面向的答案,你应该至少有一个答案满足;-)

关注

+0

谢谢Emmanuel。所以我现在在Canvas上动画(放大)。而且我将2个rects(或图像)放在画布内,然后在代码中放大画布的动画。因此,在XAML中,我没有使用,而是在我的c sharp代码中创建了'Rectangle rect1 = new Rectangle()'。这应该等同于你在xaml代码中所做的性能,对吧? – wildcolor

0

使用Panel子类(如Grid,Canvas,...)可以组合两个矩形和其他框架元素(如Texblocks) 然后将缩放变换应用到网格放大两个矩形。

这是一个的代码示例,你可以尝试 - 你可以放大/缩小withh滑块:

<Grid> 
    <Canvas x:Name="root" Margin="20 20" RenderTransformOrigin="0,0" > 
     <Canvas.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform ScaleX="{Binding ElementName=sliderScale, Path=Value}" ScaleY="{Binding ElementName=sliderScale, Path=Value}"/> 
      </TransformGroup> 
     </Canvas.RenderTransform> 
     <Rectangle Fill="Red" Stroke="Black" Width="200" Height="200"/> 
     <Rectangle Canvas.Top="20" Canvas.Left="20" Stroke="Black" Fill="Green" Width="100" Height="100"/> 
    </Canvas> 
    <Slider x:Name="sliderScale" Canvas.Left="35" Canvas.Top="251" Height="25" Width="273" Value="1" Maximum="2" Margin="74,249,170,45"/> 
</Grid> 

所有的转化在XAML做,但可以在C#中做/ Vb.Net为好。

Regards

+0

感谢您的答复。是否有可能向我展示C sharp代码而不是XAML。我实际上做的事情涉及大量的rectangels,所以我必须动态地在代码中创建它们,而不是使用XAML。什么是最好的容器包含2个rects?我目前正在使用画布。实际上,即使我有另一个容器,我仍然需要将它放到画布上,因为我需要在画布上自由移动/绘制它们。 – wildcolor

+0

画布和网格都非常好。 –