Общие сведения об эффектах для точечных рисунков

Обновлен: Ноябрь 2007

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

В этом разделе содержатся следующие подразделы.

  • Эффекты точечного рисунка в WPF
  • Практическое руководство. Применение эффекта
  • Создание пользовательских эффектов
  • Связанные разделы

Эффекты точечного рисунка в WPF

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

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

ms743435.alert_note(ru-ru,VS.90).gifПримечание.

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

ms743435.alert_note(ru-ru,VS.90).gifПримечание.

Растровые эффекты WPF не поддерживают выполнение при частичном доверии. Для использования растровых эффектов приложение должно иметь разрешения полного доверия.

Практическое руководство. Применение эффекта

BitmapEffect является свойством Visual. Таким образом, применение эффектов к Visuals, такие как Button, Image, DrawingVisual или UIElement, является таким же простым как задание свойства.BitmapEffect может быть установлено на единственный объект BitmapEffect или несколько эффектов могут быть связанными при помощи объекта BitmapEffectGroup.

В следующем примере демонстрируется применение BitmapEffect в Язык XAML (Extensible Application Markup Language).

<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;

Примеры, показывающие применение нескольких эффектов с помощью объекта BitmapEffectGroup, см. в Практическое руководство. Создание нескольких визуальных эффектов.

ms743435.alert_note(ru-ru,VS.90).gifПримечание.

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

Создание пользовательских эффектов

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

Образец пользовательского эффекта растрового рисунка содержится в разделе Пример пользовательского эффекта BitmapEffect — RGBFilter. В этом примере демонстрируются неуправляемые интерфейсы, необходимые для создания пользовательских эффектов, уровень управляемого взаимодействия и приложение WPF использующее пользовательские эффекты.

См. также

Задачи

Как анимировать эффект размытия

Практическое руководство. Анимация эффекта свечения

Практическое руководство. Анимация визуального эффекта тени

Практическое руководство. Анимирование визуальных эффектов срезания

Практическое руководство. Анимация визуального эффекта приподнятости

Основные понятия

Общие сведения об обработке изображений

Безопасность Windows Presentation Foundation

Обзор графической визуализации Windows Presentation Foundation

Оптимизация производительности: двумерная графика и обработка изображений

Ссылки

BitmapEffectGroup

BitmapEffectInput

BitmapEffectCollection

Unmanaged WPF Bitmap Effect