Double Buffering Example : Graphics « 2D « C# / CSharp Tutorial






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;


  class Form1 : Form
  {
    public Form1()
    {
    }

    protected override void OnPaint(PaintEventArgs e)
    {
      Graphics displayGraphics = e.Graphics;
      Random r = new Random();
      Image i = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
      Graphics g = Graphics.FromImage(i);

      g.FillRectangle(Brushes.White, ClientRectangle);

      for (int x = 0; x < ClientRectangle.Width; x++)
      {
        for (int y = 0; y < ClientRectangle.Height; y += 10)
        {
          Color c = Color.FromArgb(r.Next(255), r.Next(255),r.Next(255));
          Pen p = new Pen(c, 1);
          g.DrawLine(p, new Point(0, 0), new Point(x, y));
          g.DrawLine(p, new Point(10, 10), new Point(x, y));
          g.DrawLine(p, new Point(20, 10), new Point(x, y));
          g.DrawLine(p, new Point(30, 10), new Point(x, y));
          g.DrawLine(p, new Point(40, 10), new Point(x, y));
          g.DrawLine(p, new Point(50, 10), new Point(x, y));
          g.DrawLine(p, new Point(60, 10), new Point(x, y));
          g.DrawLine(p, new Point(70, 10), new Point(x, y));
          g.DrawLine(p, new Point(80, 10), new Point(x, y));
          g.DrawLine(p, new Point(90, 10), new Point(x, y));
          p.Dispose();
        }
      }
      displayGraphics.DrawImage(i, ClientRectangle);
      i.Dispose();
    }

    [STAThread]
    static void Main()
    {
      Application.EnableVisualStyles();
      Application.Run(new Form1());
    }
  }








27.1.Graphics
27.1.1.Create Graphics from Form object
27.1.2.Draw String
27.1.3.TranslateTransform a Graphics
27.1.4.Graphics.DrawImage
27.1.5.Graphics.DrawLine
27.1.6.Graphics.DrawLines
27.1.7.Set SmoothingMode
27.1.8.Draw along with the Tab
27.1.9.Graphics.DrawIcon
27.1.10.Double Buffering Example
27.1.11.No Double Buffering Example