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


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

Эффекты для точечных рисунков позволяют дизайнерам и разработчикам применять визуальные эффекты к отрисованному содержимому 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. Дополнительные справочные материалы для создания пользовательских растровых эффектов см. в разделе Неуправляемые растровые эффекты WPF.

См. также