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