Поделиться через


Обзор эффектов растрового изображения

Эффекты растрового изображения позволяют конструкторам и разработчикам применять визуальные эффекты к содержимому Windows Presentation Foundation (WPF). Например, эффекты растрового изображения позволяют легко применять эффект DropShadowBitmapEffect или эффект размытия к изображению или кнопке.

Важный

В .NET Framework 4 или более поздней версии класс BitmapEffect устарел. При попытке использовать класс BitmapEffect вы получите устаревшее исключение. Не устаревшей альтернативой классу BitmapEffect является класс Effect. В большинстве случаев класс Effect значительно быстрее.

Эффекты растрового изображения WPF

Эффекты растрового изображения (объектBitmapEffect) — это простые операции обработки пикселей. Эффект растрового изображения принимает BitmapSource в качестве входных данных и создает новый BitmapSource после применения эффекта, например размытия или падающей тени. Каждый эффект растрового изображения предоставляет свойства, которые могут управлять свойствами фильтрации, например RadiusBlurBitmapEffect.

В качестве специального случая в WPF эффекты можно задать как свойства для живых Visual объектов, таких как Button или TextBox. Обработка пикселей применяется и отрисовывается в режиме реального времени. В этом случае, во время отрисовки, Visual автоматически преобразуется в его эквивалент BitmapSource и подаётся в качестве входных данных в BitmapEffect. Выходные данные заменяют поведение отрисовки объекта Visual по умолчанию. Поэтому объекты BitmapEffect заставляют визуальные элементы рендериться только программно, без аппаратного ускорения при применении эффектов.

  • BlurBitmapEffect имитирует объект, который отображается вне фокуса.

  • OuterGlowBitmapEffect создает хальо цвета вокруг периметра объекта.

  • DropShadowBitmapEffect создает тень за объектом.

  • BevelBitmapEffect создает скос, который поднимает поверхность изображения в соответствии с указанной кривой.

  • EmbossBitmapEffect создает текстурную карту с рельефами для Visual, чтобы создать впечатление глубины и текстуры от искусственного источника света.

Заметка

Эффекты растрового изображения WPF отображаются в режиме программного обеспечения. Любой объект, который применяет эффект, также будет отображаться в программном обеспечении. Производительность снижается чаще всего при использовании эффектов растрового изображения на больших визуальных элементах или анимации свойств эффекта растрового изображения. Это не значит, что вы не должны использовать эффекты растрового изображения таким образом, но следует использовать осторожность и тщательно проверить, чтобы ваши пользователи получали ожидаемый интерфейс.

Заметка

Эффекты растрового изображения 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;

Заметка

При применении BitmapEffect к контейнеру макета, такому как DockPanel или Canvas, эффект применяется к визуальному дереву элемента или визуального элемента, включая все его дочерние элементы.

Создание настраиваемых эффектов

WPF также предоставляет неуправляемые интерфейсы для создания пользовательских эффектов, которые можно использовать в управляемых приложениях WPF. Дополнительные справочные материалы по созданию пользовательских эффектов растрового изображения см. в документации Unmanaged WPF Bitmap Effect.

См. также