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