如何将同一个反射矩形应用于多个项目



我有一组转换,用于对控件进行奇特的反射。我希望能够将相同的东西应用于其他元素,但我不知道如何将其组合在一起,并将其作为资源应用。

有人能帮我吗?下面是一些代码,它将转换应用于第一个文本框。它看起来很多,但非常简单,它只是一个控件下的矩形,应用了一些变换和其他视觉效果。我想要的是对这个矩形做同样的操作,但将其应用于其他控件(并以某种方式参数化绑定)

        <StackPanel Margin="40">
            <TextBlock x:Name="TitleDisp" FontSize="40" FontFamily="Verdana" Opacity="0.8" HorizontalAlignment="Center">Sample Title</TextBlock>
            <Rectangle Height="{Binding Path=ActualHeight, ElementName=TitleDisp}" Width="{Binding Path=ActualWidth, ElementName=TitleDisp}">
                <Rectangle.Fill>
                    <VisualBrush Visual="{Binding ElementName=TitleDisp}"/>
                </Rectangle.Fill>
                <Rectangle.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleY="0.75"/>
                        <SkewTransform AngleX="10" AngleY="8"/>
                        <TranslateTransform X="30" Y="-10"/>
                    </TransformGroup>
                </Rectangle.RenderTransform>
                <Rectangle.OpacityMask>
                    <LinearGradientBrush EndPoint="0,1">
                        <GradientStop Offset="0" Color="Transparent"/>
                        <GradientStop Offset="1" Color="#77000000"/>
                    </LinearGradientBrush>
                </Rectangle.OpacityMask>
                <Rectangle.Effect>
                    <BlurEffect/>
                </Rectangle.Effect>
            </Rectangle>
        </StackPanel>

我认为Adorners正是您想要的。它们在自己层中的控件顶部渲染,您可以装饰任何您想要的UIElement,在您的情况下,您将使用定义了这些属性的矩形来装饰文本框。MSDN上关于Adorners的文章是一个很好的开始,阅读起来也很容易。

使用一个好的旧用户控件怎么样?要反映的图形对象将是内容。所以要使用它,你可以做一些类似的事情:

 <Reflect> <TextBlock Text="Wow so much sun" /> </Reflect>

小心将控制宽度/高度缩放为宽度+某物和2*内容高度(可能使用转换器)

相关内容

  • 没有找到相关文章

最新更新