Подтвердить что ты не робот

WPF Dropshadow on Button вызывает размытый текст

Это вроде меня с ума сойдет. Добавление кнопки 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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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