Advertisement
3_2004-2005 Graphics/ Sound #149135

Programming graphics in visual basic.net

This article explains how to use the new GDI+ system with vb.net, this is the replacement for the old graphic drawing functions with loads more features.

AI

Riepilogo AI: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Codice sorgente
original-source
<p class="MsoBodyText"><span style="font-size:20.0pt;mso-bidi-font-size:12.0pt">Drawing
graphics in vb.net using GDI+, written by matt squire.</span><span lang="EN-US" style="font-size:20.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><b><span style="color:gray">Introduction:</span><span lang="EN-US" style="color:gray;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></b></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">Visual studio .Net presents a new way of drawing graphics,
which is based on drawing to a GDI surface rather than using the old line,
circle and print methods. This technology will not be new to those of us who can
write c++ but if you have only ever worked in VB then this is a completely new
way of drawing, which is entirely different to the old ways, left over from
BASIC.<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><b><span style="color:gray">How it works:</span><span lang="EN-US" style="color:gray;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></b></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">In simple terms each visible element on the screen (being a
window) contains a GDI surface which can be drawn to. To draw to a control, an
instance of the GDI class must be created and set to the controls window:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt;mso-outline-level:1"><span style="color:blue">Dim
MyGDISurface As Graphics = me.CreateGraphics</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">Here an instance of the gdi class, known as Graphics is
created and then set to the forms window using its CreateGraphics method. All
drawing will be done in MyGDISurface, this is where the real image is stored
which is transferred to the form. This way of drawing graphics may seem long and
sometimes pointless when you used to be able to just call a method or two to
draw to a form but GDI has many more features, and can be drawn to anything.</p>
<p class="MsoNormal"> <o:p>
</o:p>
</p>
<p class="MsoNormal"><b><span style="color:gray">Rectangles:<o:p>
</o:p>
</span></b></p>
<p class="MsoNormal"> <o:p>
</o:p>
</p>
<p class="MsoNormal">A rectangle is used to specify sizes and positions of
shapes, it works like the standard x1,y1,x2 and y2 values, but uses height and
width instead of x2 and y2. Rather than passing four parameters to a function,
now you can just pass a rectangle object, individual x and y values can still be
used instead of a rectangle as there are usually several versions of the same
drawing function. A rectangle can be created using the code:</p>
<p class="MsoNormal"> <o:p>
</o:p>
</p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US">Dim
MyRectangle as new Rectangle(1,1,100,218)<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">This
means x1=1, y1=1, height=100, width=218<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><b><span style="color:gray">Pens, Brushes and fonts –
drawing to your surface:</span><span lang="EN-US" style="color:gray;
mso-ansi-language:EN-US"><o:p>
</o:p>
</span></b></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">Now that you have created a working GDI surface, you can
begin to draw graphics and that means – yes more class instances.<span style="mso-ansi-language:EN-US">
</span>Things are drawn differently in gdi, for instance to draw a line you
specify its x,y,x2,y2 positions as normal (no rectangle in the line) and then
use a pen object which sets the colour and line weight. The three most important
objects used in the creation of graphics are pens, brushes and fonts:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<ul style="margin-top:0cm" type="disc">
 <li class="MsoNormal" style="mso-list:l0 level1 lfo1;tab-stops:list 36.0pt">Pen
 – defines line settings.<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
 </o:p>
 </span></li>
 <li class="MsoNormal" style="mso-list:l0 level1 lfo1;tab-stops:list 36.0pt">Brush
 – contains fill options.<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
 </o:p>
 </span></li>
 <li class="MsoNormal" style="mso-list:l0 level1 lfo1;tab-stops:list 36.0pt">Font
 – has font name, size and effects.<span lang="EN-US" style="mso-ansi-language:
 EN-US"><o:p>
 </o:p>
 </span></li>
</ul>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">You create one of these in much the same way as any other
class, for a pen you would type:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt;mso-outline-level:1"><span style="color:blue">Dim
MyRedPen as new pen(color.red)</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">An optional argument is line weight, which defaults to 1 if
not specified:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt;mso-outline-level:1"><span style="color:blue">Dim
MyRedPen as new pen(color.red,3)</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-outline-level:1">To draw a line with this pen
you would use the code:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt;mso-outline-level:1"><span style="color:blue">MyGDISurface.DrawLine(MyRedPen,1,1,100,253)<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">A brush contains settings for filling a shape, this could
be in a square, circle or any multi-sided shape. A brush is created the same way
as a pen and has the same one argument – colour:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt;mso-outline-level:1"><span style="color:blue">Dim
MyRedBrush as new SolidBrush(color.red)</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">This brush is very basic compared to what GDI+ is capable
of. There are in all five GDI+ brush classes, these are SolidBrush, HatchBrush,
TextureBrush, LinearGradientBrush and PathGradientBrush. A hatch brush is the
same as solid except it uses a hatch style, Texture fills with a bitmap image,
Linear gradient draws a simple gradient between two colours in various
directions and a path gradient can be used to create more advanced gradients
such as circular and square gradients. To use a hatch or either of the gradient
brushes, your program must import System.Drawing.Drawing2D. The texture brush is
included without importing this namespace. To import, insert the following code
at the top of your program (above any classes).<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt;mso-outline-level:1"><span style="color:blue">Imports
System.Drawing.Drawing2D</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-outline-level:1">These examples show how to
create the advanced brush classes.<span style="mso-ansi-language:EN-US"> </span>A
hatch bush can be created in the same way a solid brush is created, only with
more arguments - style, forecolour, backcolour.<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoBodyTextIndent">Dim MyHatchBrush as new HatchBrush = new
HatchBrush(HatchStyle.Plaid,color.red,color.blue)<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">The texture brush can fill objects using a bitmap; it must
be passed the bitmap image as a bitmap object. The bitmap object can be created
separately in a variable and then passed to the texture brush or it can be
created in the texture brushes declaration, therefore eliminating the need for a
new variable to be created:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoBodyTextIndent">Dim MyTextureBrush as new TextureBrush =
TextureBrush(new bitmap(“c:\myimage.bmp”))<span lang="EN-US" style="mso-ansi-language:
EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">A gradient brush comes in two types; these are linear
gradient – a simple fade between two colours and path gradient, which can
create some very complex gradients. To create a linear gradient use:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoBodyTextIndent">Dim myBrush As New
LinearGradientBrush(ClientRectangle, Color.Red,<span style="mso-spacerun:
yes">   </span>Color.Yellow, LinearGradientMode.Vertical)<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">This code would create a vertical fade from red to yellow.
This is fine for most drawing, but a path gradient can be used to create a far
more complex gradient, which can create some interesting images. A path gradient
uses a path object to define its behaviour, I won’t go into the path object in
depth here but this example shows you how a simple path gradient is created:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">'
Create a path that consists of a single ellipse.</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">Dim
path As New GraphicsPath()</span><span lang="EN-US" style="color:blue;mso-ansi-language:
EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">path.AddEllipse(0,
0, 140, 70)</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">' Use
the path to construct a brush.</span><span lang="EN-US" style="color:blue;
mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">Dim
pthGrBrush As New PathGradientBrush(path)</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">' Set
the color at the center of the path to blue.</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">pthGrBrush.CenterColor
= Color.FromArgb(255, 0, 0, 255)</span><span lang="EN-US" style="color:blue;
mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="mso-spacerun: yes; color: blue">     
</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">' Set
the color along the entire boundary </span><span lang="EN-US" style="color:blue;
mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">' of
the path to aqua.</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">Dim
colors As Color() = {Color.FromArgb(255, 0, 255, 255)}</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:blue">pthGrBrush.SurroundColors
= colors</span><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><b><span style="color:gray">Fonts:</span><span lang="EN-US" style="color:gray;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></b></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal">The font object is used to draw text; a font object
contains the font name, size and information about effects such as bold, italic,
underline. Here is a typical font class declaration:<span lang="EN-US" style="mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoBodyTextIndent"><span style="mso-bidi-font-size:10.0pt">Dim MyFont
As New Font("Times new roman", 10, FontStyle.Bold)</span><span lang="EN-US" style="mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;
mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-size:10.0pt">This font could
then be used in our GDI class to write “Hello world!” using MyFont and
MyBrush at 1x, 1y:</span><span lang="EN-US" style="mso-bidi-font-size:10.0pt;mso-ansi-language:
EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;
mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoBodyTextIndent"><span style="mso-bidi-font-size:10.0pt">MyGDISurface.DrawString(“Hello
world!”,MyFont,MyBrush,1,1)</span><span lang="EN-US" style="mso-bidi-font-size:
10.0pt;mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span style="mso-bidi-font-size:10.0pt"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="color:gray;mso-ansi-language:
EN-US">Some of the GDI+ functions:<o:p>
</o:p>
</span></b></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">Now that
you understand how to use pens, brushes and fonts you can begin to explore the
drawing functions, I will explain a few of these but to explain how every
function works in detail would take forever and I am sure you can work out most
for yourselves. The following code takes you through some simple functions.<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span><span style="color:blue">'create instance of graphics class, and set to
forms client area<o:p>
</o:p>
</span></span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">      
</span><span style="mso-spacerun: yes"> </span>Dim grap As Graphics =
Me.CreateGraphics<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'create a read pen, with a thickness of 4<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>Dim PenRed As New Pen(Color.Red, 4)<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'create a green brush<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>Dim BrushGreen As New SolidBrush(Color.Green)<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'Draw an ellipse, using redpen<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'note that drawellipse does not draw a filled ellipse<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>grap.DrawEllipse(PenRed, ClientRectangle)<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'draw a filled ellipse in the same place as<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'the previous ellipse, to create the<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'illusion of a filled ellipse with red, thick border<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>grap.FillEllipse(BrushGreen, ClientRectangle)<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'draw a little rectangle in the bottom of the screen<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'instead of using the defualt version of this function<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'i used the second one so i could specify each <o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>'x and y position rather than a rectangle<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;
color:blue;mso-ansi-language:EN-US"><span style="mso-spacerun: yes">       
</span>grap.FillRectangle(BrushGreen, 200, 200, 450, 450)</span><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:blue;
mso-ansi-language:EN-US"><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";
color:blue;mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">One more
function I would like to mention is the arc, this function draws a section of a
circle based on two angles. The curve is created using:<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoBodyTextIndent"><span lang="EN-US" style="mso-bidi-font-size:10.0pt;
mso-ansi-language:EN-US">DrawArc(PenRed, centre x, centre y, arc width, arc
height, start angle,<span style="mso-spacerun: yes">  </span>sweep angle)<o:p>
</o:p>
</span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span lang="EN-US" style="color:blue;mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">The
start angle is the angle from which the arc will begin, this is in angles and so
has a maximum of 360 degrees, zero is at the bottom of the circle.<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">Conclusion:<o:p>
</o:p>
</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US"> <o:p>
</o:p>
</span></p>
<span lang="EN-US" style="font-size:12.0pt;font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
EN-US;mso-bidi-language:AR-SA">I hope that from this article you learned the
basics of visual basic’s new graphic drawing system. Anything you would like
to say or add, just place a comment.
</span>
<p>Visit http://www.3rdlife.net - my Half life / general game programming site</p>
Commenti originali (3)
Recuperato da Wayback Machine