in. net, Microsoft provides us with the system. Drawing. Imaging class, which provides basic functions for drawing. For example, straight line, line, rectangle, polygon, elliptical shape, slice, curve, etc, therefore, common images can be drawn directly using Code . Next we will introduce some plotting functions:
bitmap bmap = new Bitmap (500,500)/defines the image size;
bmap. save (stream, imagecodecinfo)/Save the image to the specified output stream;
graphics gph/define or create a GDI drawing image;
pointf CPT/defines the X and Y coordinates in a two-dimensional plane.
drawstring (string, Font, brush, ponitf) /use the specified brush and font pairs to draw the specified string in the specified rectangle or point;
drawline (pen, ponit, ponit)/use the specified pen) draw a straight line between two points for the image.
drawpolygon (pen, ponit [])/use the specified pen to draw a specified polygon, such as a triangle or a quadrilateral;
fillpolygon (brush, ponit [])/fill the specified polygon with the specified brush (Brush);
drawellipse (pen, X, Y, width, height)/draw an ellipse defined by a border with the specified pen;
fillellipse (brush, X, Y, width, height) /fill the border-defined ellipse with the specified brush;
drawrectangle (pen, X, Y, width, height) /draw a rectangle with the specified coordinate point, width, and height with the specified pen.
drawpie (pen, X, Y, width, height, startangle, sweepangle) /draw a sector composed of the specified coordinate point, width, height, and two rays with the specified pen.
The following example shows a line chart. The Code is as follows:
Private void form1_load (Object sender, eventargs E)
{
String [] month = new string [12] {"May January", "May February", "May March", "May April", "May", "May June", "May July ", "August", "August "};
Float [] d = new float [12] {4155f, 60, 10.8f, 15.6f, 30, 70.9f, 50.3f, 30.7f, 70, 50.4f, 30.8f, 20 };
// Painting Initialization
Bitmap bmap = new Bitmap (500,500 );
Graphics gph = graphics. fromimage (bmap );
Gph. Clear (color. White );
Pointf CPT = new pointf (40,420); // center point
Pointf [] xpt = new pointf [3] {New pointf (CPT. Y + 15, CPT. y), new pointf (CPT. y, CPT. y-8), new pointf (CPT. y, CPT. Y + 8)}; // X axis triangle
Pointf [] Ypt = new pointf [3] {New pointf (CPT. x, CPT. x-15), new pointf (CPT. x-8, CPT. x), new pointf (CPT. X + 8, CPT. x)}; // y-axis triangle
Gph. drawstring ("monthly output chart of a product in a factory", new font ("", 14), brushes. black, new pointf (CPT. X + 60, CPT. x); // chart title
// Draw the X axis
Gph. drawline (pens. Black, Cpt. X, Cpt. Y, Cpt. Y, Cpt. y );
Gph. drawpolygon (pens. Black, xpt );
Gph. fillpolygon (New solidbrush (color. Black), xpt );
Gph. drawstring ("month", new font ("", 12), brushes. Black, new pointf (CPT. Y + 10, Cpt. Y + 10 ));
// Draw the Y axis
Gph. drawline (pens. Black, Cpt. X, Cpt. Y, Cpt. X, Cpt. X );
Gph. drawpolygon (pens. Black, Ypt );
Gph. fillpolygon (New solidbrush (color. Black), Ypt );
Gph. drawstring ("Unit (10 thousand)", new font ("", 12), brushes. Black, new pointf (0, 7 ));
For (INT I = 1; I <= 12; I ++)
{
// Draw the Y axis Scale
If (I <11)
{
Gph. drawstring (I * 10 ). tostring (), new font ("", 11), brushes. black, new pointf (CPT. x-30, CPT. y-I * 30-6 ));
Gph. drawline (pens. Black, Cpt. X-3, Cpt. Y-I * 30, Cpt. X, Cpt. Y-I * 30 );
}
// Draw the X axis Project
Gph. drawstring (month [I-1]. substring (0, 1), new font ("", 11), brushes. black, new pointf (CPT. X + I * 30-5, CPT. Y + 5 ));
Gph. drawstring (month [I-1]. substring (1, 1), new font ("", 11), brushes. black, new pointf (CPT. X + I * 30-5, CPT. Y + 20 ));
If (month [I-1]. length> 2) gph. drawstring (month [I-1]. substring (2, 1), new font ("", 11), brushes. black, new pointf (CPT. X + I * 30-5, CPT. Y + 35 ));
// Draw point
Gph. drawellipse (pens. Black, Cpt. x + I * 30-1.5f, Cpt. Y-d [I-1] * 3-1.5f, 3,3 );
Gph. fillellipse (New solidbrush (color. Black), Cpt. x + I * 30-1.5f, Cpt. Y-d [I-1] * 3-1.5f, 3,3 );
// Draw a value
Gph. drawstring (d [I-1]. tostring (), new font ("", 11), brushes. black, new pointf (CPT. X + I * 30, CPT. y-d [I-1] * 3 ));
// Draw line
If (I> 1) gph. drawline (pens. red, CPT. X + (I-1) * 30, CPT. y-d [I-2] * 3, CPT. X + I * 30, CPT. y-d [I-1] * 3 );
}
// Save the output image
// Bmap. Save (response. outputstream, imageformat. GIF );
Picturebox1.image = bmap;
}
As follows: