You are on page 1of 6

Types of CoordinateSystems

http://msdn.microsoft.com/en-us/library/aa1hw2kk(v=vs.110).aspx[13/01/2014 15:09:21]
Export (0) Print Collapse All
Types of Coordinate
Systems
GDI+ uses three coordinate spaces: world, page, and device. World
coordinates are the coordinates used to model a particular graphic world and
are the coordinates you pass to methods in the .NET Framework. Page
coordinates refer to the coordinate system used by a drawing surface, such as
a form or control. Device coordinates are the coordinates used by the
physical device being drawn on, such as a screen or sheet of paper. When
you make the call myGraphics.DrawLine(myPen, 0, 0, 160, 80), the
points that you pass to the DrawLine method(0, 0) and (160, 80)are
in the world coordinate space. Before GDI+ can draw the line on the screen,
the coordinates pass through a sequence of transformations. One
transformation, called the world transformation, converts world coordinates to
page coordinates, and another transformation, called the page transformation,
converts page coordinates to device coordinates.
Suppose you want to work with a coordinate system that has its origin in
the body of the client area rather than the upper-left corner. Say, for
example, that you want the origin to be 100 pixels from the left edge of
the client area and 50 pixels from the top of the client area. The following
illustration shows such a coordinate system.
Transforms and Coordinate Systems
Developer Network
Home Opportunity Platform Connect Downloads Library Samples
MSDN subscriptions

Get tools

Sign in
Join us
MSDN Library
.NET Development
.NET Framework 4.5
Development Guide
Client Applications
Windows Forms
Enhancing Windows Forms
Applications
Graphics and Drawing in Windows
Forms
About GDI+ Managed Code
Coordinate Systems and
Transformations
Types of Coordinate Systems
Matrix Representation of
Transformations
Global and Local
Transformations
.NET Framework 4.5 Other Versions
1 out of 2 rated this helpful - Rate this topic
Types of CoordinateSystems
http://msdn.microsoft.com/en-us/library/aa1hw2kk(v=vs.110).aspx[13/01/2014 15:09:21]
When you make the call myGraphics.DrawLine(myPen, 0, 0, 160,
80), you get the line shown in the following illustration.
The coordinates of the endpoints of your line in the three coordinate
spaces are as follows:
World (0, 0) to (160, 80)
Page (100, 50) to (260, 130)
Device (100, 50) to (260, 130)
Note that the page coordinate space has its origin at the upper-left corner
of the client area; this will always be the case. Also note that because the
unit of measure is the pixel, the device coordinates are the same as the
page coordinates. If you set the unit of measure to something other than
pixels (for example, inches), then the device coordinates will be different
from the page coordinates.
Types of CoordinateSystems
http://msdn.microsoft.com/en-us/library/aa1hw2kk(v=vs.110).aspx[13/01/2014 15:09:21]
The world transformation, which maps world coordinates to page
coordinates, is held in the Transform property of the Graphics class. In the
preceding example, the world transformation is a translation 100 units in
the x direction and 50 units in the y direction. The following example sets
the world transformation of a Graphics object and then uses that Graphics
object to draw the line shown in the preceding figure:
The page transformation maps page coordinates to device coordinates.
The Graphics class provides the PageUnit and PageScale properties for
manipulating the page transformation. The Graphics class also provides two
read-only properties, DpiX and DpiY, for examining the horizontal and
vertical dots per inch of the display device.
You can use the PageUnit property of the Graphics class to specify a unit
of measure other than the pixel.
Note
You cannot set the PageUnit property to World, as this is not a physical
unit and will cause an exception.
The following example draws a line from (0, 0) to (2, 1), where the point
(2, 1) is 2 inches to the right and 1 inch down from the point (0, 0):
Note
If you don't specify a pen width when you construct your pen, the
preceding example will draw a line that is one inch wide. You can
specify the pen width in the second argument to the Pen constructor:
myGraphics.TranslateTransform(100, 50);
myGraphics.DrawLine(myPen, 0, 0, 160, 80);
myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
C# VB
C# VB
Types of CoordinateSystems
http://msdn.microsoft.com/en-us/library/aa1hw2kk(v=vs.110).aspx[13/01/2014 15:09:21]
If we assume that the display device has 96 dots per inch in the horizontal
direction and 96 dots per inch in the vertical direction, the endpoints of the
line in the preceding example have the following coordinates in the three
coordinate spaces:
World (0, 0) to (2, 1)
Page (0, 0) to (2, 1)
Device (0, 0, to (192, 96)
Note that because the origin of the world coordinate space is at the
upper-left corner of the client area, the page coordinates are the same as
the world coordinates.
You can combine the world and page transformations to achieve a variety
of effects. For example, suppose you want to use inches as the unit of
measure and you want the origin of your coordinate system to be 2 inches
from the left edge of the client area and 1/2 inch from the top of the client
area. The following example sets the world and page transformations of a
Graphics object and then draws a line from (0, 0) to (2, 1):
The following illustration shows the line and coordinate system.
Pen myPen = new Pen(Color.Black, 1 /
myGraphics.DpiX);
myGraphics.TranslateTransform(2, 0.5f);
myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
C# VB
C# VB
Types of CoordinateSystems
http://msdn.microsoft.com/en-us/library/aa1hw2kk(v=vs.110).aspx[13/01/2014 15:09:21]
If we assume that the display device has 96 dots per inch in the horizontal
direction and 96 dots per inch in the vertical direction, the endpoints of the
line in the preceding example have the following coordinates in the three
coordinate spaces:
World (0, 0) to (2, 1)
Page (2, 0.5) to (4, 1.5)
Device (192, 48) to (384, 144)
Concepts
Matrix Representation of Transformations
Other Resources
Coordinate Systems and Transformations
See Also
Windows
Dev centers
Microsoft Virtual Academy
Channel 9
Learning resources
Forums
Blogs
Community
Self support
Other support options
Support
Types of CoordinateSystems
http://msdn.microsoft.com/en-us/library/aa1hw2kk(v=vs.110).aspx[13/01/2014 15:09:21]
Windows Phone
Office
Windows Azure
Visual Studio
More...
Interoperability Bridges
MSDN Magazine
Codeplex
BizSpark (for startups)
DreamSpark
Faculty Connection
Microsoft Student
Programs
Did you find this helpful? Yes No
2014 Microsoft
United States (English) Newsletter Privacy & cookies Terms of Use Trademarks

You might also like