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

时间:2012-01-04 01:53:49

标签: wpf xaml

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

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

        <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>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用好的旧用户控件怎么样?您想要反映的图形对象是内容。所以要使用它你会做类似的事情:

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

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

相关问题