EmbossBitmapEffect Class
Assembly: PresentationCore (in presentationcore.dll)
XML Namespace: http://schemas.microsoft.com/winfx/2006/xaml/presentation
Note: |
|---|
| WPF bitmap effects are software rendered. Any object that applies an effect will also be rendered in software. Bitmap effects should not be applied to large visuals or animations as this can degrade performance. |
EmbossBitmapEffect is one of several effects that are shipped with the SDK. Other effects include:
An emboss makes a selection appear raised or stamped by converting its fill color to gray and tracing the edges with the original fill color. The following illustration shows a EmbossBitmapEffect applied to a visual object (in this case applied to a Image).
The visual effect of an emboss can be modified using the Relief and LightAngle properties.
The EmbossBitmapEffect can be used to create bump mapping of the visual object to give the impression of depth and texture from an artificial light source. Below are a series of examples that show the following:
-
How to use simple markup to apply the effect to an object
-
How to use a Style to apply the effect to one or more objects
-
How to use code to apply the effect to an object
-
How to use an animation to animate the properties of an effect applied to an object
Note: All of the examples below apply only a single effect to an object. To apply multiple effects, you can use BitmapEffectGroup. See How to: Create Multiple Visual Effects for examples.
The following example shows how to use an EmbossBitmapEffect to create an embossed image.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <StackPanel> <Image Width="360" Source="/images/WaterLilies.jpg" Margin="10" > <Image.BitmapEffect> <!-- <BitmapEffectGroup> would go here if you wanted to apply more then one effect to the TextBox. However, in this example only one effect is being applied so BitmapEffectGroup does not need to be included. --> <!-- The Relief property determines the amount of relief of the emboss. The valid range of values is 0-1 with 0 having the least relief and 1 having the most. The default value is 0.44. The LightAngle determines from what direction the artificial light is cast upon the embossed object which effects shadowing. The valid range is from 0-360 (degrees) with 0 specifying the right-hand side of the object and successive values moving counter-clockwise around the object. --> <EmbossBitmapEffect Relief="0.8" LightAngle="320" /> </Image.BitmapEffect> </Image> </StackPanel> </Page>
The following example shows how to use a Style to apply an EmbossBitmapEffect to any Image on the page.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!-- Resources define Styles for the entire page. --> <Page.Resources> <!-- This style applies to any Image on the page. --> <Style TargetType="{x:Type Image}"> <Setter Property="BitmapEffect" > <Setter.Value> <EmbossBitmapEffect Relief="0.8" /> </Setter.Value> </Setter> </Style> </Page.Resources> <StackPanel> <!-- The Style defined above applies to this Image which applies the EmbossBitmapEffect. --> <Image Width="360" Source="/images/WaterLilies.jpg" Margin="10" /> </StackPanel> </Page>
The following example shows how to use code to apply an EmbossBitmapEffect to an Image when it loads.
The following is the Extensible Application Markup Language (XAML) for the example.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.EmbossExample" > <StackPanel> <!-- When this image loads, an EmbossBitmapEffect is applied to it. --> <Image Width="360" Loaded="OnLoadEmbossImage" Source="/images/WaterLilies.jpg" /> </StackPanel> </Page>
The following is the code that handles the event for the markup.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Input;
using System.Windows.Media.Effects;
namespace SDKSample
{
public partial class EmbossExample : Page
{
// Add Bevel effect.
void OnLoadEmbossImage(object sender, RoutedEventArgs args)
{
// Get a reference to the Button.
Image myImage = (Image)sender;
// Initialize a new BevelBitmapEffect that will be applied
// to the Button.
EmbossBitmapEffect myEmbossEffect = new EmbossBitmapEffect();
// The LightAngle determines from what direction the artificial
// light is cast upon the embossed object which effects shadowing.
// The valid range is from 0-360 (degrees)with 0 specifying the
// right-hand side of the object and successive values moving
// counter-clockwise around the object.
// Set the LightAngle to 320 degrees (lower right side).
myEmbossEffect.LightAngle = 320;
// The Relief property determines the amount of relief of the emboss.
// The valid range of values is 0-1 with 0 having the least relief and
// 1 having the most. The default value is 0.44.
myEmbossEffect.Relief = 0.8;
// Apply the bitmap effect to the Image.
myImage.BitmapEffect = myEmbossEffect;
}
}
}
The following example shows how to animate the LightAngle property of the EmbossBitmapEffect so that the artificial light revolves around the embossed image which makes the shadows cast by the emboss shift accordingly.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > <StackPanel> <Image Source="/images/WaterLilies.jpg" Width="600" Margin="10" > <Image.BitmapEffect> <EmbossBitmapEffect x:Name="myEmbossBitmapEffect" Relief="0.8" LightAngle="0" /> </Image.BitmapEffect> <Image.Triggers> <EventTrigger RoutedEvent="Image.Loaded"> <BeginStoryboard> <Storyboard> <!-- Animate the LightAngle so that the artificial light orbits around the embossed image which makes the shadows cast by the emboss shift accordingly. --> <DoubleAnimation Storyboard.TargetName="myEmbossBitmapEffect" Storyboard.TargetProperty="LightAngle" From="0" To="360" Duration="0:0:3" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Image.Triggers> </Image> </StackPanel> </Page>
More Code
| How to: Animate an Embossed Visual Effect | This example shows how to animate an embossed visual effect. |
| How to: Create Multiple Visual Effects | Multiple visual effects can be applied to a single visible object using the BitmapEffectGroup. The following example shows how to apply a BlurBitmapEffect and a DropShadowBitmapEffect to create a blurry button with a shadow behind it. |
| How to: Animate Multiple Visual Effects | The following example shows how to animate the ShadowDepth and Softness properties of a DropShadowBitmapEffect and the Radius property of a BlurBitmapEffect to create the illusion of a button rising up from the screen. |
- UIPermission for creating an instance of the EmbossBitmapEffect class. Associated enumerations: UIPermissionWindow.AllWindows
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Freezable
System.Windows.Media.Animation.Animatable
System.Windows.Media.Effects.BitmapEffect
System.Windows.Media.Effects.EmbossBitmapEffect
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.Reference
EmbossBitmapEffect MembersSystem.Windows.Media.Effects Namespace
Other Resources
BitMapEffects OverviewHow to: Create an Outer Glow Effect
How to: Create a Blur Visual Effect
How to: Create a Drop Shadow Visual Effect
How to: Create a Beveled Visual Effect
How to: Create an Embossed Visual Effect
How to: Create Multiple Visual Effects
How to: Animate Multiple Visual Effects
Note: