簡體   English   中英

如何將dropshadoweffect僅添加到文本框的文本(以編程方式)

[英]how to add dropshadoweffect to just the text of a textbox (programmatically)

我有一個通過編程方式添加到畫布上的文本框,我希望所有文本都具有陰影效果,但是我不希望該效果應用於文本框本身的邊框。 我該怎么做呢? 向文本框添加dropshadoweffect會將效果應用於框的邊框,並稍微“模糊”文本,但這不是我想要的,並且我無法在文本框上找到任何可以單獨為文本添加效果的屬性。 我真的必須重新設置文本框樣式或制作自己的模板來實現此目的嗎?

請注意,這是一個文本框,而不是文本塊(在這種情況下,我將只從此處復制/粘貼)

更新:找到了一種更好的方法,如果將Effect直接應用於將文本封裝在模板中的ScrollViewer ,則可以跳過“ Border部分。

<TextBox Text="Shadow Text">
    <TextBox.Resources>
        <Style TargetType="ScrollViewer">
            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect ShadowDepth="4"
                                      Direction="330"
                                      Color="Black"
                                      Opacity="0.5"
                                      BlurRadius="4"/>
                </Setter.Value>
            </Setter>
        </Style>
    </TextBox.Resources>
</TextBox>

更新2:缺少在代碼中創建TextBox的部分。 這是與上述Xaml等效的c#

Setter effectSetter = new Setter();
effectSetter.Property = ScrollViewer.EffectProperty;
effectSetter.Value = new DropShadowEffect
{
    ShadowDepth = 4,
    Direction = 330,
    Color = Colors.Black,
    Opacity = 0.5,
    BlurRadius = 4
};
Style dropShadowScrollViewerStyle = new Style(typeof(ScrollViewer));
dropShadowScrollViewerStyle.Setters.Add(effectSetter);

TextBox dropShadowTextBox = new TextBox();
dropShadowTextBox.Text = "Shadow Text";
dropShadowTextBox.Foreground = Brushes.Teal;
dropShadowTextBox.FontSize = 40;
dropShadowTextBox.Margin = new Thickness(10);
dropShadowTextBox.Resources.Add(typeof(ScrollViewer), dropShadowScrollViewerStyle);

好問題,一個想法是使TextBox的Background和BorderBrush透明並將其放置在Border

<Border BorderThickness="1"
        BorderBrush="#FF7F9DB9"
        SnapsToDevicePixels="True"
        UseLayoutRounding="True"
        Margin="10">
    <TextBox Text="Shadow Text"
             Foreground="Teal"
             FontSize="40"
             Background="Transparent"
             BorderBrush="Transparent">
        <TextBox.Effect>
            <DropShadowEffect ShadowDepth="4"
                        Direction="330"
                        Color="Black"
                        Opacity="0.5"
                        BlurRadius="4"/>
        </TextBox.Effect>
    </TextBox>
</Border>

這是與“普通” TextBox的比較

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM