Mega Code Archive

 
Categories / C# / 2D Graphics
 

Hexagon Gradient Brush

using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;     class HexagonGradientBrush: Form {      const float fSide = 50;       // Side (also radius) of hexagon          public static void Main()      {           Application.Run(new HexagonGradientBrush());      }      public HexagonGradientBrush()      {           ResizeRedraw = true;       }      protected override void OnPaint(PaintEventArgs pea)      {           DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);      }              protected void DoPage(Graphics grfx, Color clr, int cx, int cy)      {           float fHalf = fSide * (float) Math.Sin(Math.PI / 3);                       PointF[] aptf = {new PointF( fSide,         0),                                       new PointF( fSide * 1.5f,  0),                            new PointF( fSide,         0),                                       new PointF( fSide / 2,    -fHalf),                            new PointF(-fSide / 2,    -fHalf),                            new PointF(-fSide,         0),                            new PointF(-fSide * 1.5f,  0),                             new PointF(-fSide,         0),                            new PointF(-fSide / 2,     fHalf),                                 new PointF( fSide / 2,     fHalf) };               PathGradientBrush pgbrush1 =  new PathGradientBrush(aptf, WrapMode.Tile);               for (int i = 0; i < aptf.Length; i++)           {                aptf[i].X += fSide * 1.5f;                aptf[i].Y += fHalf;           }           PathGradientBrush pgbrush2 =                                new PathGradientBrush(aptf, WrapMode.Tile);               grfx.FillRectangle(pgbrush1, 0, 0, cx, cy);           grfx.FillRectangle(pgbrush2, 0, 0, cx, cy);      } }