Csharp/C Sharp/2D Graphics/FillMode

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Alternate

<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; class FillModesOddity : Form {

   public static void Main() {
       Application.Run(new FillModesOddity());
   }
   public FillModesOddity() {
       Text = "Alternate and Winding Fill Modes (An Oddity)";
       ClientSize = new Size(2 * ClientSize.Height, ClientSize.Height);
       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) {
       Brush brush = new SolidBrush(clr);
       PointF[] aptf = { new PointF(100.1f, 400.7f), new PointF(400.5f, 10.7f),
                           new PointF(200.5f, 300.1f), new PointF(300.9f, 20.1f),
                           new PointF(300.9f, 200.5f), new PointF(300.3f, 390.5f),
                           new PointF(400.3f, 0.9f), new PointF(200.7f, 200.9f),
                           new PointF(500.7f, 100.3f), new PointF(100.1f, 400.3f)};
       grfx.FillPolygon(brush, aptf, FillMode.Alternate);
   }

}

</source>


Winding

<source lang="csharp">

using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;

class FillModesOddity: Form {

    public static void Main()
    {
         Application.Run(new FillModesOddity());
    }
    public FillModesOddity()
    {
         Text = "Alternate and Winding Fill Modes (An Oddity)";
         ClientSize = new Size(2 * ClientSize.Height, ClientSize.Height);
         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)
    {
         Brush    brush = new SolidBrush(clr);
         PointF[] aptf = { new PointF(100.1f, 400.7f), new PointF(400.5f, 10.7f),
                           new PointF(200.5f, 300.1f), new PointF(300.9f, 20.1f),
                           new PointF(300.9f, 200.5f), new PointF(300.3f, 390.5f),
                           new PointF(400.3f, 0.9f), new PointF(200.7f, 200.9f),
                           new PointF(500.7f, 100.3f), new PointF(100.1f, 400.3f)};
         
         grfx.FillPolygon(brush, aptf, FillMode.Winding);
    }

}

</source>