0
我正在製作一個非常棒的程序,並且我需要爲控件添加反射和3D深度。兩次繪製控件
在這兩種情況下,我需要畫的控制了幾次,但變化在於:
對於反射我將不得不在底部再次重繪控制+翻轉。
至於3D深度,這只是背後的許多副本。
問題是如何獲得控件的圖像以便修改它並在其下面/後面繪製它?您是否有任何關於此類行爲的警告和警告/有用的提示? (我從來沒有嘗試過類似的東西)。
非常感謝。
我正在製作一個非常棒的程序,並且我需要爲控件添加反射和3D深度。兩次繪製控件
在這兩種情況下,我需要畫的控制了幾次,但變化在於:
對於反射我將不得不在底部再次重繪控制+翻轉。
至於3D深度,這只是背後的許多副本。
問題是如何獲得控件的圖像以便修改它並在其下面/後面繪製它?您是否有任何關於此類行爲的警告和警告/有用的提示? (我從來沒有嘗試過類似的東西)。
非常感謝。
在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>
非常感謝! – MasterMastic