Documents

Introduction to GDI+ Transformations

Categories
Published
of 9
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Description
Introduction to GDI+ Transformations
Transcript
  Introduction to GDI+ Transformationshttp://www.c-sharpcorner.com/UploadFile/mahesh/TransformationsinGDIPlus10102005015914AM/TransformationsinGDIPlus.aspx[13/01/2014 15:23:21] Ask a Question Reader Level: Download Files:SimpleTransformationSamp.zip   Introduction A transformation is a process that changes graphics objects from one state to another. Rotation,scaling, reflection, translation, and shearing are some examples of transformation.Transformations can be applied not only to graphics shapes, curves, and images, but even toimage colors.In this chapter we will cover the following topics:The basics of transformation, including coordinate systems and matricesGlobal, local, and composite transformationsTransformation functionality provided by the Graphics classTransformation concepts such as shearing, rotation, scaling, and translationThe Matrix and ColorMatrix classes, and their role in transformationMatrix operations in image processing, including rotation, translation, shearing, and scalingColor transformation and recoloringText transformationComposite transformations and the matrix order A Beginner's Guide to ScrumUsing Flickr Data Source in Windows Phone App StudioMost Popular Programming LanguageWorking With HTML Data Source in Windows Phone AppStudioCreate and Implement 3-Tier Architecture in ASP.Net ARTICLE  1 41,190 A transformation is a process that changes graphics objects from one state to another. Rotation, scaling,reflection, translation, and shearing are some examples of transformation. Transformations can be appliednot only to graphics shapes, curves, and images, but even to image colors. Introduction to GDI+ Transformations Posted by Mahesh Chand in Articles | GDI+ & Graphics on April 01, 2004 Tags: .NET, C#, GDI+, GDI+ and Graphics, GDI+ transformations of matrix, reflection transformation., Rotation, scaling, shearing, shearing transformation, Simple transformations, Transformation Types, Transformations in C#, Transformations in GDI+ 0 2194920  In Focus C# Corner Kolkata Chapter, Geeks Meet: Official Recap A Beginner's Guide to Scrum   Share  0 Like PREMIUM SPONSORS Nevron Nevron Software is a global leader incomponent based data visualizationtechnology for a diverse range of Microsoft centric platforms. Nevron Data Visualization components are usedby many companies, educational andgovernment organizations around theworld. TRENDING UP  TECHNOLOGIESANSWERSBLOGSVIDEOSINTERVIEWSBOOKSLINKSNEWSCHAPTERSCAREER ADVICE Contribute    Introduction to GDI+ Transformationshttp://www.c-sharpcorner.com/UploadFile/mahesh/TransformationsinGDIPlus10102005015914AM/TransformationsinGDIPlus.aspx[13/01/2014 15:23:21] Any drawing process involves a source and a destination. The source of a drawing is theapplication that created it, and the destination is a display or printer device. For example, theprocess of drawing a simple rectangle starts with a command telling GDI+ to draw on the screen,followed by GDI+ iterating through multiple steps before it finally renders a rectangle on thescreen. In the same way, transformation involves some steps before it actually renders thetransformed object on a device. These steps are shown in Figure 10.1, which shows that GDI+ isresponsible for converting world coordinates to page coordinates and device coordinates before itcan render a transformed object.Fig 10-1: Steps in the Tranformation Process. 10.1 Coordinate Systems Before we discuss transformations, we need to understand coordinate systems. GDI+ defines threetypes of coordinate spaces: world, page, and device. When we ask GDI+ to draw a line from pointA (x1, y1) to point B (x2, y2), these points are in the world coordinate system.Before GDI+ draws a graphics shape on a surface, the shape goes through a few transformationstages (conversions). The first stage converts world coordinates to page coordinates. Pagecoordinates may or may not be the same as world coordinates, depending on the transformation.The process of converting world coordinates to page coordinates is called world transformation.The second stage converts page coordinates to device coordinates. Device coordinates representhow a graphics shape will be displayed on a device such as a monitor or printer. The process of converting page coordinates to device coordinates is called page transformation. Figure 10.2 showsthe stages of conversion from world coordinates to device coordinates.Fig 10-2: Transformation Stages.In GDI+, the default srcin of all three coordinate systems is point (0, 0), which is at the upperleft corner of the client area. When we draw a line from point A (0, 0) to point B (120, 80), theline starts 0 pixels from the upper left corner in the x-direction and 0 pixels from the upper left Introduction To Backbone.jsMouse/Pointer Events in AngularJSGeneric Delegates in C#How to Generate a CREATE TABLE Script For an ExistingTable: Part 1Getting Started With Node.js Development in Visual Studio View All WCF Introduction and Contracts - Day 1Create SSRS Report Using Report WizardFactory Design PatternHow to Generate a CREATE TABLE Script For an ExistingTable: Part 1CREATE READ UPDATE and DELETE - CRUD Operation UsingLINQ to SQL Tags Chart Dispose drag drop DrawImage DrawLine DrawString Games Programmming Graphics MOST LIKED ARTICLE Find us on Facebook 20,347 people like C# Corner . C# Corner  Facebook social plugin Like  Introduction to GDI+ Transformationshttp://www.c-sharpcorner.com/UploadFile/mahesh/TransformationsinGDIPlus10102005015914AM/TransformationsinGDIPlus.aspx[13/01/2014 15:23:21] corner in the y-direction, and it will end 120 pixels over in the x-direction and 80 pixels down inthe y-direction. The line from point A (0, 0) to point B (120, 80) is shown in Figure 10.3.Drawing this line programmatically is very simple. We must have a Graphics object associated witha surface (a form or a control). We can get a Graphics object in several ways. One way is toaccept the implicit object provided by a form's paint event handler; another is to use theCreateGraphics method. Once we have a Graphics object, we call its draw and fill methods to drawand fill graphics objects. Listing 10.1 draws a line from starting point A (0, 0) to ending point B(120, 80). You can add this code to a form's paint event handler.Listing 10.1:Drawing a line from point (0, 0) to point (120, 80)Graphics g = e.Graphics;Point A = new Point(0, 0);Point B = new Point(120, 80);g.DrawLine(Pens.Black, A, B);Figure 10.3 shows the output from Listing 10.1. All three coordinate systems (world, page, anddevice) draw a line starting from point (0, 0) in the upper left corner of the client area to point(120, 80).Fig 10-3: Drawing a Line from Point(0,0) to (120,80)Now let's change to the page coordinate system. We draw a line from point A (0, 0) to point B(120, 80), but this time our srcin is point (50, 40) instead of the upper left corner. We shift thepage coordinates from point (0, 0) to point (50, 40). The TranslateTransform method of theGraphics class does this for us. We will discuss this method in more detail in the discussion thatfollows. For now, let's try the code in Listing 10.2.Listing 10.2: Drawing a line from point (0, 0) to point (120, 80) with srcin (50, 40)Graphics g = e.Graphics;g.TranslateTransform(50, 40); Get the industry leading .NET Chartingcomponent .NET Charting component with full set of charting and gauge types.Silverlight Application Development with C# and XAMLC# Language Specification 5.0Guide to Microsoft Enterprise LibraryProgramming ASP.NET MVC 5SQL Server 2012 Functions RecipesLINQ Quick Reference with C#Hands on ASP.NET GridViewEssential WCF Practical ImplementationExploring Design Pattern for DummiesGraphics Programming GraphicsPath Image Processing map Matrix object Pen class process rgb screenshot SolidBrush System.Drawing.Drawing2D text Thread.Sleep Timer control uml Web User Control SPONSORED BYWHITEPAPERS AND BOOKS  Introduction to GDI+ Transformationshttp://www.c-sharpcorner.com/UploadFile/mahesh/TransformationsinGDIPlus10102005015914AM/TransformationsinGDIPlus.aspx[13/01/2014 15:23:21] Point A = new Point(0, 0);Point B = new Point(120, 80);g.DrawLine(Pens.Black, A, B);Figure 10.4 shows the output from Listing 10.2. The page coordinate system now starts at point(50, 40), so the line starts at point (0, 0) and ends at point (120, 80). The world coordinates inthis case are still (0, 0) and (120, 80), but the page and device coordinates are (50, 40) and(170, 120). The device coordinates in this case are same as the page coordinates because thepage unit is in the pixel (default) format.Fig 10-4: Drawing a Line from Point(0,0) to (120,80) with the Origin (50,40)What is the difference between page and device coordinates? Device coordinates determine whatwe actually see on the screen. They can be represented in many formats, including pixels,millimeters, and inches. If the device coordinates are in pixel format, the page coordinates anddevice coordinates will be the same (this is typically true for monitors, but not for printers).The PageUnit property of the Graphics class is of type GraphicsUnit enumeration. In Listing 10.3we set the PageUnit property to inches. Now graphics objects will be measured in inches, so weneed to pass inches instead of pixels. If we draw a line from point (0, 0) to point (2, 1), the lineends 2 inches from the left side and 1 inch from the top of the client area in the page coordinatesystem. In this case the starting and ending points are (0, 0) and (2, 1) in both world and pagecoordinates, but the device coordinate system converts them to inches. Hence the starting andending points in the device coordinate system are (0, 0) and (192, 96), assuming a resolution of 96 dots per inch.Listing 10.3: Setting the device coordinate system to inchesg.PageUnit = GraphicsUnit.Inch;g.DrawLine(Pens.Black, 0, 0, 2, 1); Object Oriented Programming Using C# View All Your Job What is your new year's wish list? Upgrade my mobile phoneBuy a new laptop or computerGet a better jobHelp my familyMore community involvementSomething else  POLLRESULTALL POLLS Vote
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks