Author: stg609
The copyright of this article belongs to the author and the blog park. Reprint is welcome, but this statement must be retained without the consent of the author, and the original connection must be given in an obvious position on the article page, otherwise the right to investigate legal responsibility is reserved.
In the previous film, we have introduced how to use GDI + to draw simple images. This film continues to introduce you to other drawing knowledge
1. First, let's look at the Pen we used in the previous film
Pen attributes mainly include: color, dashcap, dashstyle, endcap, startcap, width, etc
We can use Pen to draw dotted lines, straight lines with arrows, etc
Pen p = new Pen(Color.Blue, 5);//Set the pen thickness to and the color to blue Graphics g = this.CreateGraphics(); //Draw a dotted line p.DashStyle = DashStyle.Dot;//Defines the style of the dashed line as a point g.DrawLine(p, 10, 10, 200, 10); //Custom dashed line p.DashPattern = new float[] { 2, 1 };//Sets an array of dashes and whitespace g.DrawLine(p, 10, 20, 200, 20); //Drawing arrows is only useful for unclosed curves p.DashStyle = DashStyle.Solid;//Restore solid line p.EndCap = LineCap.ArrowAnchor;//Defines the style of the line tail as an arrow g.DrawLine(p, 10, 30, 200, 30); g.Dispose(); p.Dispose();
Operation results of the above code:
2. Next, let's look at the use of Brush
Function: we can fill various graphic shapes with brushes, such as rectangle, ellipse, fan, polygon and closed path. There are several different types of brushes:
• SolidBrush: the simplest form of brush, painted in solid color
• HatchBrush: similar to SolidBrush, but it can be used to select the pattern to be used when drawing from a large number of preset patterns instead of solid color
• TextureBrush: use textures (such as images) to paint
• LinearGradientBrush: paint with two colors mixed along the gradient
• PathGradientBrush: Based on the unique path defined by the programmer, draw with complex mixed color gradients
Here we just briefly introduce some of them:
Graphics g = this.CreateGraphics(); Rectangle rect = new Rectangle(10, 10, 50, 50);//Define a rectangle, with parameters as the abscissa and ordinate of the starting point and its length and width //Monochrome fill SolidBrush b1 = new SolidBrush(Color.Blue);//Define monochrome brushes g.FillRectangle(b1, rect);//Fill this rectangle //character string g.DrawString("character string", new Font("Song typeface", 10), b1, new PointF(90, 10)); //Fill with picture TextureBrush b2 = new TextureBrush(Image.FromFile(@"e:\picture\1.jpg")); rect.Location = new Point(10, 70);//Change the start coordinates of this rectangle rect.Width = 200;//Change the width of this rectangle to rect.Height = 200;//Change the height of this rectangle g.FillRectangle(b2, rect); //Fill with gradient rect.Location = new Point(10, 290); LinearGradientBrush b3 = new LinearGradientBrush(rect, Color.Yellow , Color.Black , LinearGradientMode.Horizontal); g.FillRectangle(b3, rect);
Operation effect diagram:
3. Coordinate axis transformation
The coordinate axis in winform is different from the plane rectangular coordinate axis we usually contact. The direction of the coordinate axis in winform is completely opposite: the upper left corner of the form is the origin (0,0), the horizontal left increases X, and the vertical down increases Y
Next, we will draw patterns at different angles by rotating the direction of the coordinate axis, or balance the position of the coordinate axis by changing the position of the coordinate origin
Graphics g = this.CreateGraphics(); //Monochrome fill //SolidBrush b1 = new SolidBrush(Color.Blue);// Define monochrome brushes Pen p = new Pen(Color.Blue,1); //Transition axis angle for (int i = 0; i < 90; i++) { g.RotateTransform(i);//Draw a line for each degree of rotation g.DrawLine(p, 0, 0, 100, 0); g.ResetTransform();//Restore axis coordinates } //Translation axis g.TranslateTransform(100, 100); g.DrawLine(p, 0, 0, 100, 0); g.ResetTransform(); //First pan to the specified coordinates, and then rotate by degrees g.TranslateTransform(100,200); for (int i = 0; i < 8; i++) { g.RotateTransform(45); g.DrawLine(p, 0, 0, 100, 0); } g.Dispose();
Operation effect diagram:
4. Finally, let's see what else we can draw on the Graphics drawing board
In fact, what we use above is to draw some simple graphics, such as lines, rectangles, sectors, circles, etc. we can also use it to draw pictures, which can use its DrawImage method. I won't explain it in detail here. If you are interested, you can go to MSDN to understand it. This method will be used in the screenshot we will talk about later