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]()
Ответы
Ответ 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 отображает кристально чистый текст в кнопке с эффектом тени для меня.