[go: up one dir, main page]

0% found this document useful (0 votes)
151 views36 pages

Visual Studio 2008: Windows Presentation Foundation

The document discusses graphics and multimedia capabilities in Windows Presentation Foundation (WPF). It covers creating and manipulating 2D graphics, displaying images, creating and rendering 3D graphics, and adding multimedia like video. Example code is provided to demonstrate various graphics and multimedia features.

Uploaded by

api-3700231
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
151 views36 pages

Visual Studio 2008: Windows Presentation Foundation

The document discusses graphics and multimedia capabilities in Windows Presentation Foundation (WPF). It covers creating and manipulating 2D graphics, displaying images, creating and rendering 3D graphics, and adding multimedia like video. Example code is provided to demonstrate various graphics and multimedia features.

Uploaded by

api-3700231
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 36

Visual Studio® 2008:

Windows® Presentation
Foundation
Module 8: Graphics and Multimedia
• Creating 2-D Graphics

• Displaying Images

• Creating 3-D Graphics

• Manipulating the 3-D Environment

• Adding Multimedia
Lesson: Creating 2-D Graphics
• 2-D Graphics Support in WPF

• Drawing Shapes

• What Are Paths and Geometries?

• Demonstration: Filling Shapes and Geometries

• Demonstration: Using and Animating Transformations


2-D Graphics Support in WPF

Shapes
Ellipse

Rectangle
Geometry

Ellipse
Brush

Line Pen

Path
Drawing Shapes

Defined using Height and Width properties

<Rectangle Height="50" Width="100" />

<Ellipse Height="50" Width="100" />

Defined using two points

<Line X1="10" Y1="10" X2="50" Y2="50" />


What Are Paths and Geometries?

Paths are defined by geometries, which are made up of figures


and segments
<Path ...
<PathGeometry>
...
<PathFigureCollection>
...
<!-- A Triangle. -->
<LineSegment Point="10, 300" />
<LineSegment Point="200, 200" />
Demonstration: Filling Shapes and Geometries
In this demonstration, you will see how to:
• Define an Ellipse and a Rectangle

• Define Stroke and Fill values

• Create a triangle by using a Path


Notes Page Over-flow Slide. Do Not Print Slide.
See Notes pane.
Demonstration: Using and Animating Transformations
In this demonstration, you will see how to:
• Add layout and render transformations to a Shape

• Animate the transformation objects


Notes Page Over-flow Slide. Do Not Print Slide.
See Notes pane.
Lesson: Displaying Images
• WPF Imaging Components

• Demonstration: Displaying Images in WPF

• Encoding and Decoding Images

• Rotating, Converting, and Cropping Images


WPF Imaging Components

WPF introduces a new API for working with images:


• Image
• ImageBrush
• ImageDrawing

WPF supports most popular imaging formats including:

• Bitmap (BMP)
• JPEG
• Portable Network Graphics (PNG)
• Graphics Interchange Format (GIF)
• Windows Media Photo (WMP)
Demonstration: Displaying Images in WPF
In this demonstration, you will see how to:
• Display an image by using the Image class

• Display an image as a brush by using the ImageBrush


class
• Display an image as a drawing by using the ImageDrawing
class
Encoding and Decoding Images
Decode Encode

BitmapDecoder BitmapEncoder
Rotating, Converting, and Cropping Images

To rotate an image:

• Set the Rotation property on a BitmapImage

To convert an image to a different pixel format:

• Use FormatConverterBitmap

To crop an image:

• Set the Clip property of an Image or use CroppedBitmap


Lesson: Creating 3-D Graphics
• Differences Between 2-D and 3-D

• 3-D Graphics Support in WPF

• What Is a Viewport3D?

• Camera Types for Viewport3D

• Creating Models

• Demonstration: Rendering 3-D Content


Differences Between 2-D and 3-D

New concepts in 3-D:

• Z-axis
• Cameras
• Lights

Similar concepts, but new names:

• Drawings become models


• Brushes become materials
3-D Graphics Support in WPF
Material Camera

Viewport3D

Model3D Light
What is a Viewport3D?

3-D graphics content is encapsulated in a Viewport3D


• Viewport3D is a 2-D visual element
• Provides a viewport into a 3-D scene
• Contains 3-D models

<Canvas Width="300" Height="200">


<Viewport3D ClipToBounds="True"
Width="150" Height="150"
Canvas.Left="0" Canvas.Top="10">
...

</Viewport3D>
</Canvas>
Camera Types for Viewport3D

Create a camera to specify the point of view for a 3-D scene

Perspective Orthographic

<PerspectiveCamera <OrthographicCamera
FieldOfView="45" LookDirection="-1.0 -1 -4"
LookDirection="-1.0 -1 -4" Position="2 2 4"
Position="2 2 4" UpDirection="0 1 0"
UpDirection="0 1 0" /> Width="3.5" />
Creating Models
• Use models to define the shape of your 3-D objects

• Use MeshGeometry3D classes to define positions and


triangle indices

<MeshGeometry3D
Positions="2 0 0, 2 2 0, -2 0 0, -2 2 0"
TriangleIndices="0 1 2, 3 2 1" />

Y
1
220

2 0
-2 0 0 200

X
Demonstration: Rendering 3-D Content
In this demonstration, you will see how to:
• Review triangle geometry

• Create a rectangle

• Move the PerspectiveCamera


Lesson: Manipulating the 3-D Environment
• Specifying Materials for a 3-D Model

• Specifying Light for a 3-D Model

• Demonstration: Transforming a 3-D Model

• Demonstration: Animating a 3-D Model


Specifying Materials for a 3-D Model
Use any Material-derived classes on your model:
• DiffuseMaterial
• SpecularMaterial

• EmissiveMaterial

Use materials to define the surface characteristics and


texture of a 3-D object

<GeometryModel3D.Material>
<DiffuseMaterial
Brush="CornflowerBlue">
...
Specifying Light for a 3-D Model
Use any Light-derived classes in your model:
• AmbientLight

• DirectionalLight

• PointLight

• SpotLight

Use lights to make the surfaces of your models visible

<ModelVisual3D>
...
<AmbientLight Color="#404040" />
<DirectionalLight Color="#C0C0C0"
Direction="2 -3 -1" />
...
Demonstration: Transforming a 3-D Model
In this demonstration, you will see how to:
• Make a geometry a resource

• Create a cube by using transforms


Demonstration: Animating a 3-D Model
In this demonstration, you will see how to:
• Make a Storyboard

• Rotate a cube continuously by using DoubleAnimation


Lesson: Adding Multimedia
• WPF Support for Multimedia

• Media Playback Modes

• Displaying Media by Using a MediaElement

• Controlling the Operation of a MediaElement

• Playing Media by Using a MediaPlayer


WPF Support for Multimedia

WPF supports the playback of audio and video media by


using:

• MediaElement
• MediaPlayer

Sound
Video
Media Playback Modes

Set the Clock property on MediaElement and


MediaPlayer to specify the media playback mode
• Independent mode
• Clock mode
Displaying Media by Using a MediaElement

To play media by using a MediaElement:

<StackPanel ... >


<MediaElement Source="videos\bear.wmv" />
</StackPanel>
Controlling the Operation of a MediaElement

Control how the MediaElement behaves by using:

• LoadedBehavior
• UnloadedBehavior

Control playback through the MediaElement by using the


playback methods:

• Play
• Pause
• Stop
• Close
Playing Media by Using a MediaPlayer

MediaPlayer is designed to be used with drawing objects

<VideoDrawing x:Name="videoSurface"
Rect="0,0,300,200" />
XAML

MediaPlayer player = new MediaPlayer();


player.Open(new Uri(@"videos\bear.wmv"));
this.videoSurface.Player = player;
player.Play();
C#
Lab: Graphics and Multimedia
• Exercise 1: Displaying 2-D Graphics

• Exercise 2: Displaying Images

• Exercise 3: Displaying 3-D Graphics

• Exercise 4: Playing Video Clips

Logon information
Virtual machine 6460A-LON-DEV-08

User name Student

Password Pa$$w0rd

Estimated time: 60 minutes


Lab Review
• How do you define an ImageBrush as background to
another element?
• How do you use a VisualBrush to render a Path?

• Which object do you need to assign a camera to in order


to display a 3-D model?
• What property of the AxisAngleRotation3D class do you
need to target to cause a model to rotate?
• How do you stop a MediaElement from playing back the
source media after it is loaded?
Module Review and Takeaways
• Review Questions

• Common Issues and Troubleshooting Tips

• Best Practices

• Tools

You might also like