DropShadowBitmapEffect Не работает на TextBlock - PullRequest
0 голосов
/ 21 сентября 2008

Кто-нибудь знает, почему DropShadowBitmapEffect и EmbossBitmapEffect не будут работать с TextBlock (не textBOX) в WPF? OuterGlow, Blur и Bevel работают нормально.


Кисть с прозрачным фоном, по-видимому, не является ответом, потому что вы можете получить тень с нулевой фоновой кистью. Мягкость по умолчанию для тени составляет 50%, и если у вас маленький шрифт, мягкость слишком сильно рассеивает тень. Вокруг мягкости, равной 39%, наблюдается крутой спад (в этот момент тень более или менее исчезает). Попробуйте установить его в 0 и медленно двигаясь вверх, пока не найдете число, которое все еще показывает тень.


Еще одно замечание: мягкость, безусловно, является фактором, но имейте в виду, что в Xaml действительные значения на самом деле только от 0 до 1, но в Blend он показывает его в процентах до 100. Поэтому, если вы установите значение в 100 в Xaml это будет полностью рассеяно.


Фоновая кисть = прозрачный раствор все еще может работать для эффекта тиснения

Ответы [ 2 ]

2 голосов
/ 21 сентября 2008

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

Редактировать: спрашивающий нашел ответ

"Спасибо, что указали мне правильное общее направление. Не имел значения цвет текста или DropShadow, нужно сделать фоновую кисть на TextBlock прозрачной кистью (Alpha = 0) нуля. "

1 голос
/ 22 сентября 2008

Важная заметка: вам больше не следует использовать BitmapEffects. Используйте свойство Effect, основанное на эффектах ShaderModel, представленных в .net 3.5 SP1, оно использует аппаратный рендеринг и имеет гораздо лучшую производительность.

Дополнительная информация

...