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


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

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

Важное примечаниеВажно

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

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

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

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

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

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

  • BlurBitmapEffect имитирует просмотр объекта через расфокусированную лупу.

  • OuterGlowBitmapEffect создает цветное сияние вокруг объекта.

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

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

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

ПримечаниеПримечание

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

ПримечаниеПримечание

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

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

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

В следующем примере демонстрируется применение BitmapEffect в Extensible Application Markup Language (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. Дополнительные справочные материалы для создания пользовательских растровых эффектов см. в документации Неуправляемый растровый эффект в WPF.

См. также

Ссылки

BitmapEffectGroup

BitmapEffectInput

BitmapEffectCollection

Unmanaged WPF Bitmap Effect

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

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

Безопасность (WPF)

Общие сведения об отрисовке графики в WPF

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