2012-09-14 77 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