Кнопка WPF Dropshadow on вызывает размытый текст

Это сводит меня с ума. Добавление DropShadowEffect кнопке. В IDE это выглядит так:

enter image description here

вторая кнопка для справки без DropShadowEffect. Как видите, дальше никакой разницы. Затем я создаю проект, и когда он запускается, он выглядит так:

enter image description here

что вызывает это изменение? Вот XAML для двух кнопок:

<Button Name="clearButton" Content="Clear" Click="clearButton_Click" Margin="5,0,5,0" MaxWidth="80" MinHeight="40" 
    TextOptions.TextFormattingMode="Display">
<Button.Effect>
    <DropShadowEffect BlurRadius="5" ShadowDepth="3" />
</Button.Effect>
</Button>
<Button Content="Clear" Margin="5,5,5,0" MaxWidth="80" MinHeight="40"  TextOptions.TextFormattingMode="Display" />

изменить: Принимая @gretro делает его лучше, но это все еще не правильно:

enter image description here

еще раз в IDE это выглядит нормально:

enter image description here

2 ответов


вся ваша кнопка рендеринга на границе между пикселями. Обратите внимание, как 1-точечная граница фактически охватывает несколько пикселей, вызывая эффект размытия.

попробуйте UseLayoutRounding="True" на родительском элементе или элементе предка. Чем дальше вверх по дереву, тем лучше (корень зрения будет идеальным). Вы также можете попробовать SnapsToDevicePixels="True".


удалить вложенное свойство TextOptions.TextFormattingMode="Display". Это то, что заставляет кнопку быть размытой.

<Button Grid.Row="25" Grid.Column="0" Content="Clear">
    <Button.Effect>
       <DropShadowEffect BlurRadius="5" ShadowDepth="3" />
    </Button.Effect>
</Button>

этот XAML отображает кристально чистый текст в кнопке с эффектом тени для меня.