Graphics in C# - Irregular Forms | |||
| |||
Drawing an irregular form, like drawing anything, requires four things : a surface, a stylus, a color and something to draw. Surface The surface upon which you draw is equivivalent to two different objects within the Framework: the Graphics object and the Region Object. The Graphics object provides the methods for drawing to the device context. A device context is analogous to a co-ordinate system laid on top of the form. Useful items such as Position can be extrapolated from this object. The Graphics object uses, what is known as Vector Graphics, which are drawings that exist on a co-ordinate system and are ideal for 2-D creations. The bounds of the Graphics object are always defined by a rectangle. The available drawing surface though, may not be a rectangle. The Region object describes the interior of a Graphics object. This region is the actual available drawing surface. It can be a rectangle or any polygonal area. This object is typically used to limit the drawing capabilities on a form. Stylus This is the tool with which you draw. The .NET Framework gives you two such tools : the pen and the brush. The purpose of the pen is to draw lines and curves. Thus, the pen can be used to draw borders, graphs and outlines of regions or shapes. The other stylus in the toolkit is the brush. There are five types of brushes : HatchBrush, LinearGradientBrush, PathGradientBrush, SolidBrush and TextureBrush. Color Colors available in the Framework are categorized under two headings : KnownColor and SystemColors. A KnownColor is essentially a color with a warm and fuzzy name : for eg. , in this enumeration you can find colors named Bisque, AliceBlue, PapayaWhip, PeachPuff etc. Under the SystemColors class, you find the system-level settings for items in the operating system such as WindowFrame, ActiveBorder, Desktop etc. You can also specify new colors not already defined. This is commonly done using the FromARGB method. This method requires the Alpha component; and the Red, Green and Blue components. Object to Draw After everything is said and done, nothing in the previous section does you any good if you don't have something to draw. So, experiment and play around. If you find something that you are interested in depicting programmatically, take a cubist approach and see what happens. That's what I did. Here's a Sample Code (the FormBorderStyle property of the Form is set to None) using System.Drawing.Drawing2D; using System.Drawing.Drawing2D; protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { GraphicsPath gp = new GraphicsPath(); Graphics gr = this.CreateGraphics(); Region r; RectangleF rf; PointF[] p = new PointF[9]; Font f; p[0] = new PointF(70, 0); p[1] = new PointF(170, 0); p[2] = new PointF(240, 70); p[3] = new PointF(240, 170); p[4] = new PointF(170, 240); p[5] = new PointF(70, 240); p[6] = new PointF(0, 170); p[7] = new PointF(0, 70); p[8] = new PointF(70, 0); gp.AddPolygon(p); PathGradientBrush pgb = new PathGradientBrush(p); Color[] c = new Color[2]; c[0] = Color.Honeydew ; c[1] = Color.SeaShell; pgb.CenterColor = Color.Chocolate; pgb.SurroundColors = c; gr.FillPolygon(pgb, p); r = new Region(gp); this.Region = r; gr = this.CreateGraphics(); gr.DrawPolygon(new Pen(Color.White, 5), p); gr.DrawPolygon(new Pen(Color.Black, 3), p); rf = new RectangleF(15, 105, 240, 115); f = new Font(FontFamily.GenericMonospace, 13, FontStyle.Bold); gr.DrawString("Irregular Form Demo", f, new LinearGradientBrush(gr.VisibleClipBounds, Color.Blue, Color.Black, LinearGradientMode.BackwardDiagonal), rf); f.Dispose(); gr.Dispose(); gp.Dispose(); r.Dispose(); } Tags: Base64Decode C# CreateGraphics DrawPolygon LinearGradientBrush PathGradientBrush | |||
| |||
| |||
Login for comment |