DropShadowBitmapEffect не работает с TextBlock

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


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


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


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


person viggity    schedule 21.09.2008    source источник


Ответы (2)


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

Изменить: спрашивающий нашел ответ

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

person Lou Franco    schedule 21.09.2008

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

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

person Nidonocu    schedule 21.09.2008