IXREffect (Compact 2013)
3/28/2014
This C++ class represents the base class for custom effects, which modify the appearance of visual elements in your application.
Syntax
class IXREffect : public IXRDependencyObject
Inheritance Hierarchy
IXREffect
Methods
Method |
Description |
---|---|
Retrieves a pointer to the class that applies a custom effect to an object in your application. |
|
Sets the class that applies a custom effect to an object in your application. |
Thread Safety
Members of this class are thread-safe if you previously called IXRApplication::CreateHostFromXaml and supplied it with an XRWindowCreateParams structure that has AllowsMultipleThreadAccess set to true.
Remarks
Effects modify the appearance of UI elements, for example, by blurring an element or adding a drop shadow. Effects alter the individual pixels of a rasterized UI object by using an algorithm to alter how the pixels are displayed.
For more information about the implementation of effects in XAML for Windows Embedded, requirements for creating custom effects, and the Blur and DropShadow effects, see Differences Between Microsoft Silverlight 3 and XAML for Windows Embedded.
To display effects in XAML for Windows Embedded, you must use hardware acceleration to ensure that effects are processed as fast as possible. For more information about hardware acceleration, see Hardware-Accelerated Graphics.
Stub code is provided for a Blur and DropShadow effect in the %_WINCEROOT%\PUBLIC\COMMON\OAK\XamlRuntimeEffects folder. The stub code uses the header files %_WINCEROOT%\PUBLIC\COMMON\OAK\XamlEffects\Blur\inc\BlurEffect.h and %_WINCEROOT%\PUBLIC\COMMON\OAK\XamlEffects\DropShadow\inc\DropShadowEffect.h. These files show how to implement your own effects. They contain static functions to get and set the attributes of the effects. For example, the following example code sets the opacity on the drop shadow effect defined in DropShadowEffect.h:
XRPtr<IXREffect> pEffect;
pRootElement->FindName("CDropShadowEffect", &pEffect);
CHR(CDropShadowEffect::SetOpacity( pEffect, 0.7f);
Note
If you add BlurEffect.h and DropShadowEffect.h to an SDK you create for application developers, you must also include CustomEffectBase.h in your SDK.
The following XAML code will apply a drop shadow effect to a button object:
<Button Content="Button">
<Button.Effect>
<DropShadowEffect
BlurRadius="20"
Direction="316"
ShadowDepth="20"
Opacity="0.6" />
</Button.Effect>
</Button>
The following illustration shows the drop shadow effect applied to the button that appears in front of a rounded rectangle. The drop shadow also appears in front of the rectangle.
Custom Effects
To use custom effects in XAML or in code for a XAML for Windows Embedded application, you must include the header file which defines the custom effect in the application. To apply the custom effect in XAML, use the same syntax used for DropShadowEffect and BlurEffect XAML elements in Microsoft Silverlight 3.
To apply the custom effect in code, follow the steps below:
- Include the header file (.h) for the custom effect library.
- Create an instance of the custom effect class.
- Create an instance of IXREffect and add the custom effect by using the IXREffect::SetCustomEffect method.
- Finally, add the effect to the UI element by calling the IXRUIElement::SetEffect method.
The syntax to use for setting properties on the custom effect depends on the implementation of the effect. For example, if CustomEffectClassName is the name of the custom effect class, you could use the following syntax:
HRESULT CustomEffectClassName::GetPropertyName(IXREffect* pEffect, Type* pValue);
HRESULT CustomEffectClassName::SetPropertyName(IXREffect* pEffect, Type Value);
To query for a custom effect which was parsed and loaded into the C++ visual tree, you could use the following syntax:
XRPtr<IXREffect> pEffect;
pRootElement->FindName("CustomEffectClassName", &pEffect);
When you create a class instance, use an IXREffectPtr smart pointer instead of a raw interface pointer. For more information, see XRPtr<Interface>.
.NET Framework Equivalent
System.Windows.Media.Effects.Effect
Requirements
Header |
XamlRuntime.h |
sysgen |
SYSGEN_XAML_RUNTIME |