Table 14.4:The HatchStyle Enumeration
Value
Effect
BackwardDiagonal
Diagonal lines from top-right to bottom-left
Cross
Vertical and horizontal crossing lines
DiagonalCross
Diagonally crossing lines
ForwardDiagonal
Diagonal lines from top-left to bottom-right
Horizontal
Horizontal lines
Vertical
Vertical lines
Gradient Brushes
A gradient brush fills a shape with a specified gradient. The 
LinearGradientBrush
fills a shape with
a linear gradient, and the 
PathGradientBrush
fills a shape with a gradient that has one starting color
and many ending colors. Gradient brushes are discussed in detail in the section “Gradients” later in
this chapter.
Textured Brushes
In addition to solid and hatched shapes, you can fill a shape with a texture using a TextureBrush
object. The texture is a bitmap that is tiled as needed to fill the shape. Textured brushes are used in
creating rather fancy graphics, and we’ll not explore them in this chapter.
Drawing Shapes
In this section, you will learn the drawing methods of the Graphics object. Before getting into the
details of the drawing methods, however, let’s write a simple application that draws a couple of
simple shapes on a form. First, we must create a Graphics object with the following statement:
Dim G As Graphics
G = Me.CreateGraphics
Everything you draw on the surface represented by the Gobject will appear on the form. Then, we
must create a Pen object to draw with. The following statement creates a Pen object that draws in blue:
Dim P As New Pen(Color.Blue)
You’ve created the two basic objects for drawing: the drawing surface and the drawing instru-
ment. Now you can draw shapes by calling the Graphics object’s methods. The following statement
will print a rectangle with its top-left corner near the top-left corner of the form (at a point that’s 10
pixels to the right and 10 pixels down from the form’s corner) and is 200 pixels wide and 150 pixels
tall. These are the values you must pass to the DrawRectangle method as arguments, along with the
Pen object that will be used to render the rectangle:
G.DrawRectangle(P, 10, 10, 200, 150)
Chapter 14 DRAWING AND PAINTING WITH VISUAL BASIC
642
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Bulk pdf to tiff converter - Convert PDF to tiff images in C#.net, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
pdf to grayscale tiff; pdf to tiff batch converter
Bulk pdf to tiff converter - VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.net, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
convert pdf to tiff multiple pages; pdf to tiff converter for
Let’s add the two diagonals of the rectangle. The diagonals are two lines, one from the top-left to
the bottom-right corner of the rectangle and another from top-right to bottom-left. Here are the
two statements that draw the diagonals:
G.DrawLine(P, 10, 10, 210, 160)
G.DrawLine(P, 210, 10, 10, 160)
We’ve written all the statements to create a shape on the form, but where do we insert them? Let’s
try a Button. Start a new project, place a button on it, and then insert the statements of Listing 14.6
in the Button’s Click event handler.
Listing 14.6: Drawing Simple Shapes
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim G As Graphics
G = Me.CreateGraphics
Dim P As New Pen(Color.Blue)
G.DrawRectangle(P, 10, 10, 200, 150)
G.DrawLine(P, 10, 10, 210, 160)
G.DrawLine(P, 210, 10, 10, 160)
End Sub
Run the application and click the button. You will see the shape shown in Figure 14.10. This fig-
ure was created by the SimpleShapes application on the CD.
Persistent Drawing
If you switch to the Visual Studio IDE, or any other window, and then return to the form of the
SimpleShapes application, you’ll see that the drawing has disappeared! If you’re a VB6 programmer,
you’ve recognized that the form’s AutoRedraw property isn’t True. But there’s no AutoRedraw
property in VB.NET. Only the bitmap of the PictureBox is persistent. Everything you draw on the
Graphics object is temporary. It doesn’t become part of the Graphics object and is visible only while
the control, or the form, need not be redrawn. As soon as the form is redrawn, the shapes disappear.
Figure 14.10
The output of
Listing 14.6
643
DRAWING WITH GDI+
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
C# TIFF: Online C# Guide for TIFF to SVG Conversion
better testing or using of our .NET TIFF Converter SDK in new TIFFDocument(@"C:\Source\ Tiff\sample.tif"); // bulk operation for converting TIFF document to
convert pdf to grayscale tiff; compare pdf to tiff
C# TIFF: How to Convert TIFF to GIF Using Sample C# Code
Converting Library, conversions from TIFF to PDF & vector SVG TIFFDocument doc = new TIFFDocument(@"C:\Source\Tiff\sample.tif"); // bulk operation for
pdf to tiff quality; program to automatically convert pdf to tiff
So, how do we make the output of the various drawing methods permanent on the form?
Microsoft suggests placing all the graphics statements in the OnPaint method, which is activated
automatically when the form is redrawn. OnPaint is a method of the form, which is invoked auto-
matically by the operating system and, in turn, it invokes the Paint event. To draw something every
time the form is redrawn, place the necessary statements in the OnPaint method.
The OnPaint method accepts a single argument, the eargument, which, among other properties,
exposes the form’s Graphics object. You can create a Graphics object in the OnPaint method and
then draw on this object. Listing 14.7 is the OnPaint event handler that creates the shape shown in
Figure 14.10 and refreshes the form every time it’s totally or partially covered by another form.
Delete the code in the button’s Click event handler and insert the subroutine from the listing into
the form’s code window.
Listing 14.7: Programming the OnPaint Event
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Dim G As Graphics
G = e.Graphics
Dim P As New Pen(Color.Blue)
G.DrawRectangle(P, 10, 10, 200, 150)
G.DrawLine(P, 10, 10, 210, 160)
G.DrawLine(P, 210, 10, 10, 160)
End Sub
If you run the application now, it works like a charm. The shapes appear to be permanent, even
though they’re redrawn every time you switch to the form. All the samples that come with Visual
Studio place the graphics statements in the OnPaint method, so that they’re executed every time the
form is redrawn.
This technique is fine for a few graphics elements you want to place on the form to enhance its
appearance. But many applications draw something on the form in response to user actions, like the
click of a button or a menu commands. Using the OnPaint method in a similar application is out of
the question. The drawing isn’t the same, and you must figure out from within your code which
shapes you have to redraw at any given time. Consider a drawing application. The current drawing
evolves according to the commands you issue. The code in the OnPaint method can’t execute a few
drawing commands to regenerate the drawing. Keeping track of the drawing commands that were
executed and the order in which they were executed is quite a task. The solution is to make the
drawing permanent on the Graphics object, so it won’t have to be redrawn every time the form is
hidden or resized.
It is possible to make the graphics permanent by drawing not on the Graphics object, but directly
on the control’s (or the form’s) bitmap. The Bitmap object contains the pixels that make up the image
and is very similar to the Image object. As you will see, you can create a Bitmap object and assign it to
an Image object. In the image-processing application we’ll develop toward the end of this chapter,
Chapter 14 DRAWING AND PAINTING WITH VISUAL BASIC
644
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
VB.NET Image: How to Process & Edit Image Using VB.NET Image
VB.NET Image Processing Control SDK FAQs. Q 1: Does this VB.NET image processing control SDK allow developers to process & edit image in bulk?
save pdf to tiff; create tiff from pdf
VB.NET TIFF: Convert TIFF to HTML Web Page Using VB.NET TIFF
like VB.NET PDF to HTML converter toolkit to convert PDF document to this VB.NET TIFF to HTML converter SDK support converting TIFF files to HTML in bulk?
pdf to tiff quality; how to convert pdf to tiff online
you’ll learn how to extract the bitmap from a PictureBox control, process the pixels of a bitmap, and
then assign the processed bitmap back to the control’s Image property. In the meantime, you can use
the code of Listing 14.7 to create a drawing surface that doesn’t have to be constantly redrawn.
To create this “permanent” drawing surface, you must first create a Bitmap object that has the
same dimensions as the PictureBox control you want to draw on:
Dim bmp As Bitmap
bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height)
The bmpvariable represents an empty bitmap. Then, we set the control’s Image property to this
bitmap with the following statement:
PictureBox1.Image = bmp
Immediately after that, you must set the bitmap to the control’s background color with the Clear
method:
G.Clear(PictureBox1.BackColor)
After the execution of this statement, anything we draw on the bmpbitmap is shown on the sur-
face of the PictureBox control and is permanent. All we need is a Graphics object that represents the
bitmap, so that we can draw on the control. The following statement creates a Graphics object based
on the bmpvariable:
Dim G As Graphics
G = Graphics.FromImage(bmp)
Now, we’re in business. We can call the Gobject’s drawing methods to draw and create perma-
nent graphics on the PictureBox control. You can put all the statements presented so far in a func-
tion that returns a Graphics object (Listing 14.8) and use it in your applications.
Listing 14.8: Retrieving a Graphics Object from a PictureBox’s Bitmap
Function GetGraphicsObject(ByVal PBox As PictureBox) As Graphics
Dim bmp As Bitmap
bmp = New Bitmap(PBox.Width, PBox.Height)
PBox.Image = bmp
Dim G As Graphics
G = Graphics.FromImage(bmp)
Return G
End Function
To create permanent drawings on the surface of the PictureBox control, you must call the Get-
GraphicsObject() function to obtain a Graphics object from the control’s bitmap. The Form object
doesn’t expose an Image property, so you must use its BackgroundImage property. Listing 14.9 is
the revised GetGraphicsObject() function for the Form object.
645
DRAWING WITH GDI+
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
C# PDF: Start to Create, Load and Save PDF Document
and it contains all document information of PDF file. It is an extension of BaseDocument. C# programmers can use PDFDocument object to do bulk operations like
program to automatically convert pdf to tiff; change pdf to tiff for
C# TIFF: Complete TIFF to PNG Image Conversion Using C# Project
a TIFF document TIFFDocument doc = new TIFFDocument(@"C:\Source\Tiff\sample.tif"); // bulk operation for It supports converting TIFF to PDF document, TIFF
multipage pdf to multipage tiff; online pdf to tiff conversion
Listing 14.9: Retrieving a Graphics Object from a Form’s Bitmap
Function GetGraphicsObject() As Graphics
Dim bmp As Bitmap
bmp = New Bitmap(Me.Width, Me.Height)
Dim G As Graphics
Me.BackgroundImage = bmp
G = Graphics.FromImage(bmp)
Return G
End Function
Let’s revise the SimpleShapes application so that it draws permanent shapes on the form. Create a
new project and place two Button controls on it. Insert the GetGraphicsObject() function in the
form’s code window and then the statements shown in Listing 14.10 behind each button. The list-
ing shows the entire code of the SimpleGraphics application, which is on the CD.
Listing 14.10: The SimpleGraphics Application
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim G As Graphics
G = GetGraphicsObject()
G.Clear(Color.Silver)
Dim P As New Pen(Color.Blue)
G.DrawRectangle(P, 10, 10, 200, 150)
G.DrawLine(P, 10, 10, 210, 160)
G.DrawLine(P, 210, 10, 10, 160)
Me.Invalidate()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
Me.CreateGraphics.DrawEllipse(Pens.Red, 10, 10, 200, 150)
End Sub
Function GetGraphicsObject() As Graphics
Dim bmp As Bitmap
bmp = New Bitmap(Me.Width, Me.Height)
Dim G As Graphics
Me.BackgroundImage = bmp
G = Graphics.FromImage(bmp)
Return G
End Function
Chapter 14 DRAWING AND PAINTING WITH VISUAL BASIC
646
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
VB.NET Image: VB.NET Example to Load Image from .NET Graphics in .
are enabled to load an image or bulk ones from formats such as png, jpeg, gif, tiff and bmp provide powerful & profession imaging controls, PDF document, image
how to convert pdf into tiff file; program to convert pdf to tiff
VB.NET Image: VB Code to Download and Save Image from Web URL
able to download, view and save the bulk of image change the sample PNG to BMP/JPEG/TIFF/GIF provide powerful & profession imaging controls, PDF document, image
batch pdf to tiff converter; online pdf to tiff converter
The first button (the Draw On Bitmap button of the SimpleGraphics application) draws on the
Graphics object derived from the form’s background bitmap. Anything drawn on this object is per-
manent. The second button (the Draw On Graphics button) uses the Graphics object returned by
the form’s CreateGraphics method to draw an ellipse in red color, inscribed in the rectangle. The
ellipse isn’t permanent. If you click both buttons, you will see the rectangle and its two diagonals, as
well as the ellipse. Switch to another window and then bring the application to the foreground. The
ellipse will not be there, because it wasn’t drawn permanently on the form.
As you can guess, it’s possible to combine the two methods and draw shapes that are permanent
and shapes that are not. To erase the non-permanent shapes, call the control’s Invalidate method,
which redraws the control. Anything drawn on the Graphics object returned by the control’s Create-
Graphics method will disappear. The Invalidate method can be called without an argument to
refresh (invalidate) the entire control. Or it can be called with a Rectangle object as argument, in
which case it will invalidate the area of the control specified by the Rectangle object.
Now that you know how to draw on the Graphics object and you’re familiar with the basic draw-
ing objects, we can discuss the drawing methods in detail. In the following sections, I use the Create-
Graphics method to retrieve the drawing surface of a PictureBox or form to keep the examples short.
You can modify any of the projects to draw on the Graphics object derived from a bitmap. All you
have to do is change the statements that create the Gvariable.
Drawing Methods
With basic objects out of the way, we can now focus on the drawing methods themselves. There are
many drawing methods, one for each basic shape. You can create much more elaborate shapes by
combining the methods described in the following sections.
All drawing methods have a few things in common. The first argument is always a Pen object,
which will be used to render the shape on the Graphics object. The following arguments are the
parameters of a shape: they determine the location and dimensions of the shape. The DrawLine
method, for example, needs to know the endpoints of the line to draw, while the DrawRectangle
method needs to know the origin and dimensions of the rectangle to draw. The parameters needed
to render the shape are passed as arguments to each drawing method, following the Pen object.
The drawing methods can also be categorized in two major groups: the methods that draw
stroked shapes (outlines) and the methods that draw filled shapes. The methods in the first group
start with the “Draw” prefix (DrawRectangle, DrawEllipse, and so on). The methods of the second
group start with the “Fill” prefix (FillRectangle, FillEllipse, and so on). Of course, some DrawXXX
methods don’t have an equivalent FillXXX method. For example, you can’t fill a line or an open
curve, so there are no FillLine or FillCurve methods.
Another difference between the drawing and filling methods is that the filling methods use a Brush
object to fill the shape—you can’t fill a shape with a pen. So, the first argument of the methods that
draw filled shapes is a Brush object, not a Pen object. The remaining arguments are the same, because
you must still specify the shape to be filled, just as you would specify the shape to be drawn. In the
following sections, I will present in detail the shape-drawing methods but not the shape-filling meth-
ods. If you can use a drawing method, you can just as easily use its filling counterpart.
Table 14.5 shows the names of the drawing methods. The first column contains the methods for
drawing stroked shapes and the second column contains the corresponding methods for drawing
filled shapes (if there’s a matching method). 
647
DRAWING WITH GDI+
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
C# Word: How to Compress, Decompress Word in C#.NET Projects
formats, such as JBIG2, JPEG2000, TIFF and other it easy to create single or bulk Word compression powerful & profession imaging controls, PDF document, image
pdf to tiff file converter; online pdf to tiff
C# Imaging - Planet Barcode Generation Guide
formats. Creating single or bulk PLANET bar codes on documents such as PDF, Office Word, Excel, PowerPoint and multi-page TIFF. Empower
convert pdf to tiff file online; file converter pdf to tiff
Table 14.5:The Drawing Methods
Drawing Method
Filling Method
Description
DrawArc
Draws an arc
DrawBezier
Draws very smooth curves with fixed endpoints, whose
exact shape is determined by two control points
DrawBeziers
Draws multiple Bezier curves in a single call
DrawClosedCurve
FillClosedCurve
Draws a closed curve
DrawCurve
Draws curves that pass through certain points
DrawEllipse
FillEllipse
Draws an ellipse
DrawIcon
Renders an icon on the Graphics object
DrawImage
Renders an image on the Graphics object
DrawLine
Draws a line segment
DrawLines
Draws multiple line segments in a single call
DrawPath
FillPath
Draws a GraphicsPath object
DrawPie
FillPie
Draws a pie section
DrawPolygon
FillPolygon
Draws a polygon (a series of line segments between points)
DrawRectangle
FillRectangle
Draws a rectangle
DrawRectangles
FillRectangles
Draws multiple rectangles in a single call
DrawString
Draws a string in the specified font on the drawing surface
FillRegion
Fills a Region object
Some of the drawing methods allow you to draw multiple shapes of the same type, and they’re prop-
erly named 
DrawLines
DrawRectanlges
, and 
DrawBeziers
. We simply supply more shapes as arguments,
and they’re drawn one after the other with a single call to the corresponding method. The multiple
shapes are stored in arrays of the same type, as the individual shapes. The DrawRectangle method, for
example, accepts as argument the Rectangle object to be drawn. The DrawRectangles method accepts as
argument an array of Rectangle objects and draws them in a single call.
DrawLine
The DrawLine method draws straight line-segments between two points with a pen supplied as
argument. The simplest forms of the DrawLine method are the following:
Graphics.DrawLine(pen, X1, Y1, X2, Y2)
Graphics.DrawLine(pen, point1, point2)
where the coordinates are expressed in pixels (or the current coordinate system) and point1and point2
are either Point or PointF objects, depending on the coordinate system in use.
Chapter 14 DRAWING AND PAINTING WITH VISUAL BASIC
648
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
DrawRectangle
The DrawRectangle method draws a stroked rectangle and has two forms:
Graphics.DrawRectangle(pen, rectangle)
Graphics.DrawRectangle(pen, X1, Y1, width, height)
The rectangleargument is a Rectangle object that specifies the shape to be drawn. In the second
form of the method, the arguments X1and Y1are the coordinates of the rectangle’s top-left corner
and the other two arguments are the dimensions of the rectangle. All these arguments can be integers
or singles, depending on the coordinate system in use. However, they must be all of the same type.
The following statements draw two rectangles, one inside the other. The outer rectangle is drawn
with a red pen with the default width, while the inner rectangle is drawn with a 3-pixel-wide green pen.
Graphics.DrawRectangle(Pens.Red, 100, 100, 200, 100)
Graphics.DrawRectangle(New Pen(Color.Green, 3), 125, 125, 75, 50)
DrawEllipse
An ellipse is an oval or circular shape, determined by the rectangle that encloses it. The two dimen-
sions of this rectangle are the ellipse’s major and minor diameters. Instead of giving you a mathemat-
ically correct definition of an ellipse, I’ve prepared a few ellipses with different ratios of their two
diameters. These ellipses are shown in Figure 14.11. The figure was prepared with the GDIPlus
application, which demonstrates a few more graphics operations; you will find it in this chapter’s
folder on the CD. The ellipse is oblong along the direction of the major diameter and squashed
along the direction of the minor diameter. If the two diameters are exactly equal, the ellipse
becomes a circle. Indeed, the circle is just a special case of the ellipse.
To draw an ellipse, call the DrawEllipse method, which has two basic forms:
Graphics.DrawEllipse(pen, rectangle)
Graphics.DrawEllipse(pen, X1, Y1, width, height)
Figure 14.11
Two ellipses with
their enclosing rec-
tangles
649
DRAWING WITH GDI+
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
The arguments are the same as with the DrawRectangle method, because an ellipse is basically 
a circle deformed to fit in a rectangle. The two ellipses and their enclosing rectangles shown in Fig-
ure 14.11 were generated with the statements of Listing 14.11.
Listing 14.11: Drawing Ellipses and Their Enclosing Rectangles
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim G As Graphics
G = PictureBox1.CreateGraphics
G.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias
G.FillRectangle(Brushes.Silver, ClientRectangle)
Dim R1, R2 As Rectangle
R1 = New Rectangle(10, 10, 160, 320)
R2 = New Rectangle(200, 85, 320, 160)
G.DrawEllipse(New Pen(Color.Black, 3), R1)
G.DrawRectangle(Pens.Black, R1)
G.DrawEllipse(New Pen(Color.Black, 3), R2)
G.DrawRectangle(Pens.Red, R2)
End Sub
The ellipses were drawn with a pen that is three pixels wide. As you can see in the figure, the
width of the ellipse is split to the inside and outside of the enclosing rectangle, which is drawn with a
1-pixel-wide pen.
DrawPie
A pie is a shape similar to a slice of a pie: an arc along with the two line segments that connect its
endpoints to the center of the circle, or the ellipse, to which the arc belongs. The DrawPie method
accepts as arguments the pen with which it will draw the shape, the circle to which the pie belongs,
the arc’s starting angle, and its sweep angle. The circle (or the ellipse) of the pie is defined with a rec-
tangle. The starting and sweeping angles are measured clockwise. The DrawPie method has two
forms, which are:
Graphics.DrawPie(pen, rectangle, start, sweep)
Graphics.DrawPie(pen, X, Y, width, height, start, sweep)
The two forms of the method differ in how the rectangle is defined (a Rectangle object versus its
coordinates and dimensions). The startargument is the pie’s starting angle, and sweepis the angle of
the pie. The ending angle is start+sweep. Angles are measured in degrees (there are 360 degrees in a
circle) and increase in a clockwise direction. The 0 angle corresponds to the horizontal axis, and the
vertical axis forms a 90-degree angle with the horizontal axis.
The following statements create a pie chart by drawing individual pie slices. Each pie starts where
the previous one ends, and the sweeping angles of all pies add up to 360 degrees, which corresponds
to a full rotation (a full circle). Figure 14.12 shows the output produced by the Listing 14.12.
Chapter 14 DRAWING AND PAINTING WITH VISUAL BASIC
650
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Listing 14.12: Drawing a Simple Pie Chart with the FillPie Methods
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
Dim G As System.Drawing.Graphics
G = Me.CreateGraphics
Dim brush As System.drawing.SolidBrush
Dim rect As Rectangle
brush = New System.Drawing.SolidBrush(Color.Green)
Dim Angles() As Single = {0, 43, 79, 124, 169, 252, 331, 360}
Dim Colors() As Color = {Color.Red, Color.Cornsilk, Color.Firebrick, _
Color.OliveDrab, Color.LawnGreen, _
Color.SandyBrown, Color.MidnightBlue}
G.Clear(Color.Ivory)
rect = New Rectangle(100, 10, 300, 300)
Dim angle As Integer
For angle = 1 To Angles.GetUpperBound(0)
brush.Color = Colors(angle - 1)
G.FillPie(brush, rect, Angles(angle - 1), _
Angles(angle) - Angles(angle - 1))
Next
G.DrawEllipse(Pens.Black, rect)
End Sub
The code sets up two arrays, one with angles and another with colors. The Anglesarray holds the
starting angle of each pie. The sweep angle of each pie is the difference between its own starting
angle and the starting angle of the following pie. The sweep angle of the first pie is 
Angles(1) –
Angles(0)
, which is 43 degrees. The loop goes through each pie and draws it with a color it picks
from the Colorsarray, based on the angles stored in the Anglesarray.
The second button on the PieChart project’s form draws the same pie chart, but it also connects
each slice’s endpoints to the center of the circle. The code behind this button is identical to the code
Figure 14.12
A simple pie chart
generated with the
PieChart method
651
DRAWING WITH GDI+
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Documents you may be interested
Documents you may be interested