2012-09-14 38 views
0

我正在制作一个非常棒的程序,并且我需要为控件添加反射和3D深度。两次绘制控件

在这两种情况下,我需要画的控制了几次,但变化在于:

对于反射我将不得不在底部再次重绘控制+翻转。

至于3D深度,这只是背后的许多副本。

问题是如何获得控件的图像以便修改它并在其下面/后面绘制它?您是否有任何关于此类行为的警告和警告/有用的提示? (我从来没有尝试过类似的东西)。

非常感谢。

回答

2

在WPF中,您可以使用VisualBrush作为另一个元素(例如Rectangle)的背景/填充。这VisualBrush有一个Visual属性可以绑定到另一个控件,以模仿其内容。在此控件上使用变换和alpha蒙版可以帮助应用反射式效果。例如:

<StackPanel Width="200"> 
    <TextBox x:Name="tb">Hello world</TextBox> 
    <Rectangle Height="40" HorizontalAlignment="Stretch"> 
     <Rectangle.Fill> 
     <VisualBrush Visual="{Binding ElementName=tb}" /> 
     </Rectangle.Fill> 
     <Rectangle.RenderTransform> 
     <ScaleTransform CenterY="20" ScaleY="-1" /> 
     </Rectangle.RenderTransform> 
     <Rectangle.OpacityMask> 
     <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
      <GradientStop Color="#00000000" Offset="0" /> 
      <GradientStop Color="#FFFFFFFF" Offset="1" /> 
     </LinearGradientBrush> 
     </Rectangle.OpacityMask> 
    </Rectangle> 
    </StackPanel> 
+0

非常感谢! – MasterMastic