Lights are similar to lights in real life. Light objects are used to illuminate a part of a scene. Lights can be used to create shadow effects. In a 3D scene at least one light has to be added to make the scene visible. WPF has four different types of lights with unique functionalities.
The following are the types of light available in WPF.
AmbientLight – provides uniform lighting to all the objects in a 3D scene.
DirectionalLight – It is like a distant light source. It does not have a location but has a direction.
PointLight – It illuminates like a nearby light source. It has a location and provides light effect from the location and objects in the scene are illuminated based on the location and position of the point light.
SpotLight – It is similar to a pointlight. It provides illumination in a cone shape. The ‘InnerConeAngle’ and ‘OuterConeAngle’ properties determine the illumination of the objects in the 3D scene.
WPF lets you specify a negative value for the Border’s Margin. This way the available size for the children of the Border will not reduce when a Border is rendered.
The following example animates the thickness of a border by using the ‘ThicknessAnimation’ property.
The example uses the ’BorderThickness’ property of Border.
[XAML]
<!-- an animation on the BorderThickness property of a Border. --><Pagexmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ><StackPanelOrientation='Vertical'HorizontalAlignment='Center'><BorderBackground='#99FFFFFF'BorderBrush='#CCCCFF'BorderThickness='1'Margin='0,60,0,20'Padding='20' ><Border.Triggers><EventTriggerRoutedEvent='Border.Loaded'><BeginStoryboard><Storyboard><!-- BorderThickness animates from left=1, right=1, top=1, and bottom=1 to
left=28, right=28, top=14, and bottom=14 over one second. --><ThicknessAnimationStoryboard.TargetProperty='BorderThickness'Duration='0:0:1.5'FillBehavior='HoldEnd'From='1,1,1,1'To='28,14,28,14' /></Storyboard></BeginStoryboard></EventTrigger></Border.Triggers><TextBlock>
This example shows how to use the ThicknessAnimation to create
an animation on the BorderThickness property of a Border.
</TextBlock></Border></StackPanel></Page>
Each model has a particular location in the scene. In order to move the model around the scene, rotate the model or to change it’s size, it is not practical to change the vertices of a model like the 2D objects. Instead 3D models have the ‘Transform’ property with which you can move the models, change their sizes or rotate them.
The following example shows how to define a BulletDecorator control that uses an ’image’ as the Bullet and a ’non-text element’ as the Child. In this example, the Bullet object centers itself next to the non-text element.