This section presents Graphics methods for drawing lines, rectangles and ovals. Each of the drawing methods has several overloaded versions. Methods that draw hollow shapes typically require as arguments a Pen and four ints. Methods that draw solid shapes typically require as arguments a Brush and four ints. The first two int arguments represent the coordinates of the upper-left corner of the shape (or its enclosing area), and the last two ints indicate the shape's (or enclosing area's) width and height. Figure 17.13 summarizes several Graphics methods and their parameters. [Note: Many of these methods are overloadedconsult the documentation for a complete listing (msdn2.microsoft.com/en-us/library/system.drawing.graphics).]
Graphics Drawing Methods and Descriptions |
---|
DrawLine( Pen p, int x1, int y1, int x2, int y2 ) |
Draws a line from (x1, y1) to (x2, y2). The Pen determines the line's color, style and width. |
DrawRectangle( Pen p, int x, int y, int width, int height ) |
Draws a rectangle of the specified width and height. The top-left corner of the rectangle is at point (x, y). The Pen determines the rectangle's color, style and border width. |
FillRectangle( Brush b, int x, int y, int width, int height ) |
Draws a solid rectangle of the specified width and height. The top-left corner of the rectangle is at point (x, y). The Brush determines the fill pattern inside the rectangle. |
DrawEllipse(Pen p, int x, int y, int width, int height ) |
Draws an ellipse inside a bounding rectangle of the specified width and height. The top-left corner of the bounding rectangle is located at (x, y). The Pen determines the color, style and border width of the ellipse. |
FillEllipse( Brush b, int x, int y, int width, int height ) |
Draws a filled ellipse inside a bounding rectangle of the specified width and height. The topleft corner of the bounding rectangle is located at (x, y). The Brush determines the pattern inside the ellipse. |
The application in Fig. 17.14 draws lines, rectangles and ellipses. In this application, we also demonstrate methods that draw filled and unfilled shapes.
Figure 17.14. Demonstration of methods that draw lines, rectangles and ellipses.
1 // Fig. 17.14: LinesRectanglesOvals.cs 2 // Demonstrating lines, rectangles and ovals. 3 using System; 4 using System.Drawing; 5 using System.Windows.Forms; 6 7 // draw shapes on Form 8 public partial class LinesRectanglesOvals : Form 9 { 10 // default constructor 11 public LinesRectanglesOvals() 12 { 13 InitializeComponent(); 14 } // end constructor 15 16 // override Form OnPaint method 17 protected override void OnPaint( PaintEventArgs paintEvent ) 18 { 19 // get graphics object 20 Graphics g = paintEvent.Graphics; 21 SolidBrush brush = new SolidBrush( Color.Blue ); 22 Pen pen = new Pen( Color.AliceBlue ); 23 24 // create filled rectangle 25 g.FillRectangle( brush, 90, 30, 150, 90 ); 26 27 // draw lines to connect rectangles 28 g.DrawLine( pen, 90, 30, 110, 40 ); 29 g.DrawLine( pen, 90, 120, 110, 130 ); 30 g.DrawLine( pen, 240, 30, 260, 40 ); 31 g.DrawLine( pen, 240, 120, 260, 130 );32 33 // draw top rectangle 34 g.DrawRectangle( pen, 110, 40, 150, 90 ); 35 36 // set brush to red 37 brush.Color = Color.Red; 38 39 // draw base Ellipse 40 g.FillEllipse( brush, 280, 75, 100, 50 ); 41 42 // draw connecting lines 43 g.DrawLine( pen, 380, 55, 380, 100 ); 44 g.DrawLine( pen, 280, 55, 280, 100 ); 45 46 // draw Ellipse outline 47 g.DrawEllipse( pen, 280, 30, 100, 50 ); 48 } // end method OnPaint 49 } // end class LinesRectanglesOvals |
Methods FillRectangle and DrawRectangle (lines 25 and 34) draw rectangles on the screen. For each method, the first argument specifies the drawing object to use. The FillRectangle method uses a Brush object (in this case, an instance of SolidBrusha class that derives from Brush), whereas the DrawRectangle method uses a Pen object. The next two arguments specify the coordinates of the upper-left corner of the bounding rectangle, which represents the area in which the rectangle will be drawn. The fourth and fifth arguments specify the rectangle's width and height. Method DrawLine (lines 2831) takes a Pen and two pairs of ints, specifying the start and end of a line. The method then draws a line, using the Pen object.
Methods FillEllipse and DrawEllipse (lines 40 and 47) each provide overloaded versions that take five arguments. In both methods, the first argument specifies the drawing object to use. The next two arguments specify the upper-left coordinates of the bounding rectangle representing the area in which the ellipse will be drawn. The last two arguments specify the bounding rectangle's width and height, respectively. Figure 17.15 depicts an ellipse bounded by a rectangle. The ellipse touches the midpoint of each of the four sides of the bounding rectangle. The bounding rectangle is not displayed on the screen.
Figure 17.15. Ellipse bounded by a rectangle.
Drawing Arcs |
Preface
Index
Introduction to Computers, the Internet and Visual C#
Introduction to the Visual C# 2005 Express Edition IDE
Introduction to C# Applications
Introduction to Classes and Objects
Control Statements: Part 1
Control Statements: Part 2
Methods: A Deeper Look
Arrays
Classes and Objects: A Deeper Look
Object-Oriented Programming: Inheritance
Polymorphism, Interfaces & Operator Overloading
Exception Handling
Graphical User Interface Concepts: Part 1
Graphical User Interface Concepts: Part 2
Multithreading
Strings, Characters and Regular Expressions
Graphics and Multimedia
Files and Streams
Extensible Markup Language (XML)
Database, SQL and ADO.NET
ASP.NET 2.0, Web Forms and Web Controls
Web Services
Networking: Streams-Based Sockets and Datagrams
Searching and Sorting
Data Structures
Generics
Collections
Appendix A. Operator Precedence Chart
Appendix B. Number Systems
Appendix C. Using the Visual Studio 2005 Debugger
Appendix D. ASCII Character Set
Appendix E. Unicode®
Appendix F. Introduction to XHTML: Part 1
Appendix G. Introduction to XHTML: Part 2
Appendix H. HTML/XHTML Special Characters
Appendix I. HTML/XHTML Colors
Appendix J. ATM Case Study Code
Appendix K. UML 2: Additional Diagram Types
Appendix L. Simple Types
Index