Общие сведения об эффектах для точечных рисунков
Растровые эффекты позволяют конструкторам и разработчикам применять визуальные эффекты к просмотру содержимого Windows Presentation Foundation (WPF). Например, растровые эффекты позволяют легко применить DropShadowBitmapEffect эффект или эффект размытия для изображения или кнопки.
Important
В .NET Framework 4 или более поздней версии, BitmapEffect класс является устаревшим. Если вы попытаетесь использовать BitmapEffect класса, будет вызвано исключение устаревшего. Неустаревшая альтернатива для BitmapEffect класс является Effect класса. В большинстве случаев Effect класс значительно быстрее.
Растровые эффекты WPF
Эффекты для точечных рисунков (BitmapEffect объекта) — это простой пикселей операции обработки. Растровый эффект принимает BitmapSource как входных данных и выдает новый BitmapSource после применения эффекта, например размытия или тени. Каждый растровый эффект обеспечивает свойства, которые могут управлять свойствами фильтра, такими как Radius из BlurBitmapEffect.
Как особый случай в WPF, эффекты могут задаваться как свойства в реальном времени Visual объекты, такие как Button или TextBox. Обработка пикселей применяется и отображается во время выполнения. В этом случае во время подготовки к просмотру Visual автоматически преобразуется в его BitmapSource эквивалентное и передается в качестве входных данных для BitmapEffect. Выходные данные заменяют Visual поведение отрисовки по умолчанию для объекта. Вот почему BitmapEffect объектов заставляют визуальные для подготовки к просмотру в программном обеспечении только т. е. без аппаратного ускорения на визуальных элементах при применении эффектов.
BlurBitmapEffect имитирует объект, который отображается вне в фокусе.
OuterGlowBitmapEffect Создает цветное свечение по периметру объекта.
DropShadowBitmapEffect создает тень позади объекта.
BevelBitmapEffect Создает Рельеф, поднимающий поверхность изображения в соответствии с указанной кривой.
EmbossBitmapEffect Создает рельефа Visual впечатление глубины и текстуры от искусственного источника света.
Note
WPF эффекты для точечных рисунков подготавливаются к просмотру в режиме программного обеспечения. Любой объект, который применяет эффект, будет также отрисован в программном режиме. Производительность наиболее снижается при использовании растровых эффектов на больших визуальных объектах или при анимации свойств растрового эффекта. Это не означает, что не следует вовсе использовать растровые эффекты, но следует соблюдать осторожность и выполнять тщательное тестирование, чтобы убедиться, что пользователи получат то, что вы ожидаете.
Note
WPF Эффекты для точечных рисунков не поддерживают выполнение при частичном доверии. Для использования растровых эффектов приложение должно иметь разрешения полного доверия.
Применение эффекта
BitmapEffect является свойством Visual. Поэтому применение эффектов к визуальным элементам, такие как Button, Image, DrawingVisual, или UIElement, так же просто, как задание свойства. BitmapEffect можно задать единое BitmapEffect объект или несколько эффектов можно объединить в цепочку с помощью BitmapEffectGroup объекта.
Следующий пример демонстрирует применение BitmapEffect в XAML.
<Button Width="200">You Can't Read This!
<Button.BitmapEffect>
<!-- <BitmapEffectGroup> would go here if you wanted to apply more
then one effect to the Button. However, in this example only
one effect is being applied so BitmapEffectGroup does not need
to be included. -->
<!-- The larger the Radius, the more blurring. The default range is 20.
In addition, the KernelType is set to a box kernel. A box kernel
creates less disruption (less blur) then the default Gaussian kernel. -->
<BlurBitmapEffect Radius="10" KernelType="Box" />
</Button.BitmapEffect>
</Button>
Следующий пример демонстрирует применение BitmapEffect в коде.
// Get a reference to the Button.
Button myButton = (Button)sender;
// Initialize a new BlurBitmapEffect that will be applied
// to the Button.
BlurBitmapEffect myBlurEffect = new BlurBitmapEffect();
// Set the Radius property of the blur. This determines how
// blurry the effect will be. The larger the radius, the more
// blurring.
myBlurEffect.Radius = 10;
// Set the KernelType property of the blur. A KernalType of "Box"
// creates less blur than the Gaussian kernal type.
myBlurEffect.KernelType = KernelType.Box;
// Apply the bitmap effect to the Button.
myButton.BitmapEffect = myBlurEffect;
Note
Когда BitmapEffect применяется к контейнеру макета, такие как DockPanel или Canvas, эффект применяется к визуальному дереву элемента или визуального элемента, включая все его дочерние элементы.
Создание пользовательских эффектов
WPF также предоставляет неуправляемые интерфейсы для создания пользовательских эффектов, которые могут быть использованы в управляемом WPF приложений. Дополнительные справочные материалы для создания пользовательских растровых эффектов см. в разделе Неуправляемые растровые эффекты WPF.