Csharp/C Sharp/2D Graphics/Brush

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

Brushes.Black

<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms;

class HelloWorld: Form {

    public static void Main()
    {
         Application.Run(new HelloWorld());
    }
    public HelloWorld()
    {
         Text = "Hello World";
         BackColor = Color.White;
    }
    protected override void OnPaint(PaintEventArgs pea)
    {
         Graphics graphics = pea.Graphics;
  
         graphics.DrawString("Hello, Windows Forms!", Font, 
                         Brushes.Black, 0, 0);
    }

}

</source>


Brush Style

<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace GDI_Basics {

   public class HatchBrushes : System.Windows.Forms.Form
   {
       private System.ruponentModel.Container components = null;
       public HatchBrushes()
       {
           InitializeComponent();
       }
       protected override void Dispose( bool disposing )
       {
           if( disposing )
           {
               if(components != null)
               {
                   components.Dispose();
               }
           }
           base.Dispose( disposing );
       }
       #region Windows Form Designer generated code
       private void InitializeComponent()
       {
           this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
           this.ClientSize = new System.Drawing.Size(564, 390);
           this.Resize += new System.EventHandler(this.HatchBrushes_Resize);
           this.Paint += new System.Windows.Forms.PaintEventHandler(this.HatchBrushes_Paint);
       }
       #endregion
       private void HatchBrushes_Resize(object sender, System.EventArgs e)
       {
           this.Invalidate();
       }
       private void HatchBrushes_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
       {
           HatchBrush myBrush;
           int y = 20;
           int x = 20;
           foreach (HatchStyle brushStyle in System.Enum.GetValues(typeof(HatchStyle)))
           {
               myBrush = new HatchBrush(brushStyle, Color.Blue, Color.LightYellow);
               e.Graphics.FillRectangle(myBrush, x, y, 40, 20);
               e.Graphics.DrawString(brushStyle.ToString(), new Font("Tahoma", 8), 
                   Brushes.Black, 50 + x, y + 5);
               y += 30;
               if ((y + 30) > this.ClientSize.Height)
               {
                   y = 20;
                   x += 180;
               }
           }
       }
       [STAThread]
       static void Main() 
       {
           Application.Run(new HatchBrushes());
       }
   }

}


      </source>


Gradient brush demo

<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class Form1 : System.Windows.Forms.Form{

   private System.ruponentModel.IContainer components;
 public Form1(){
   InitializeComponent();
 }
 #region Windows Form Designer generated code
 private void InitializeComponent(){
     this.ruponents = new System.ruponentModel.Container();
     this.timer1 = new System.Windows.Forms.Timer(this.ruponents);
     this.timer1.Enabled = true;
     this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
     this.AutoScaleBaseSize = new System.Drawing.Size(6, 15);
     this.ClientSize = new System.Drawing.Size(292, 260);
     this.Name = "Form1";
     this.Text = "LinearGradientBrush Demo";
     this.Load += new System.EventHandler(this.Form1_Load);
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   }
 #endregion
 static void Main(){
   Application.Run(new Form1());
 }
   private void Form1_Load(object sender, System.EventArgs e) {
     this.BackColor = Color.FromArgb(255, 0, 0, 255);  
   }
   private System.Windows.Forms.Timer timer1;
   private float angle = 0;
   private LinearGradientBrush GetBrush()
   {
     return new LinearGradientBrush(
       new Rectangle( 20, 20, 200, 100),
       Color.Orange,
       Color.Yellow,
       0.0F,
       true);
   }
   private void Rotate( Graphics graphics, LinearGradientBrush brush )
   {
     brush.RotateTransform(angle);
     brush.SetBlendTriangularShape(.5F);
     graphics.FillRectangle(brush, brush.Rectangle);
   }
   private void Rotate(Graphics graphics)
   {
     angle += 5 % 360;
     Rotate(graphics, GetBrush());
   }
   private void timer1_Tick(object sender, System.EventArgs e)
   {
     Rotate(CreateGraphics());
   }
   private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {
     Rotate(e.Graphics);
   }

}


      </source>


Hatch Brush Styles

<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Drawing2D; // LinearGradientBrush namespace HatchBrushStyles {

   public class HatchBrushStyles : System.Windows.Forms.Form
   {
       private System.ruponentModel.Container components = null;
       public HatchBrushStyles()
       {
           InitializeComponent();
           this.Size = new Size(500, 150);
       }
       protected override void Dispose( bool disposing )
       {
           if( disposing )
           {
               if (components != null) 
               {
                   components.Dispose();
               }
           }
           base.Dispose( disposing );
       }
       #region Windows Form Designer generated code
       private void InitializeComponent()
       {
           this.ruponents = new System.ruponentModel.Container();
           this.Size = new System.Drawing.Size(300,300);
           this.Text = "HatchBrushStyles";
       }
       #endregion
       [STAThread]
       static void Main() 
       {
           Application.Run(new HatchBrushStyles());
       }
       protected override void OnPaint(PaintEventArgs e)
       {   
           Graphics g = e.Graphics;
           Font f = new Font(new FontFamily("Times New Roman"), 10);
           Brush fb = new SolidBrush(Color.Black);
           Color cb = Color.Red, cf =Color.White;
        
           int wi = 30, hi = 25, rectNb = 14;
           int x, y;
           HatchBrush hb = null;
           for(int i = 0; i < 53; i++)
           {
               x = (int)(i % rectNb);
               y = (int)(i / rectNb);
               hb = new HatchBrush((HatchStyle)i, cf, cb);
               g.FillRectangle(hb, 2 + x*(5 + wi), 2 + y*(5 + hi), wi, hi);
           }
           
           fb.Dispose();   hb.Dispose();   g.Dispose();
       }
   }

}

      </source>


Hexagon Gradient Brush

<source lang="csharp"> 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);
    }

}

</source>


illustrates filling shapes with a brush

<source lang="csharp"> using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class Example21_4 : System.Windows.Forms.Form {

 private System.ruponentModel.Container components = null;
 public Example21_4()
 {
   InitializeComponent();
 }
 private void InitializeComponent()
 {
   this.BackColor = System.Drawing.Color.White;
   this.ClientSize = new System.Drawing.Size(400, 400);
   this.Name = "Example21_4";
   this.Text = "Example21_4";
   this.Paint += new System.Windows.Forms.
     PaintEventHandler(this.Example21_4_Paint);
 }
 static void Main() 
 {
   Application.Run(new Example21_4());
 }
 private void Example21_4_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
 {
   Graphics g = e.Graphics;
   Brush brSolid = new SolidBrush(Color.Blue);
   Brush brHatch = new HatchBrush(HatchStyle.HorizontalBrick,
     Color.Red, Color.Yellow);
   Brush brGradient = new LinearGradientBrush(new Rectangle(0, 0, 200, 200), Color.Black, Color.LightGray, 45, false);
   g.FillRectangle(brGradient, 10, 10, 200, 200);
   g.FillEllipse(brHatch, 200, 200, 150, 190);
   g.FillPie(brSolid, 0, 0, 300, 300, 285, 75);
 }

}


      </source>


Solid brush demo

<source lang="csharp">

 using System;
 using System.Drawing;
 using System.Collections;
 using System.ruponentModel;
 using System.Windows.Forms;
 using System.Data;
 public class MainForm : System.Windows.Forms.Form
 {
   private System.ruponentModel.Container components;
   public MainForm()
   {
     InitializeComponent();
     BackColor = Color.LemonChiffon;  
     Text = "www.nfex.ru";    
     Size = new Size(200, 200);    
     CenterToScreen();        
   }
   protected override void Dispose( bool disposing )
   {
     if( disposing )
     {
       if (components != null) 
       {
         components.Dispose();
       }
     }
     base.Dispose( disposing );
   }
   private void InitializeComponent()
   {
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 273);
     this.Text = "Form1";
     this.Resize += new System.EventHandler(this.MainForm_Resize);
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.MainForm_Paint);
   }
   [STAThread]
   static void Main() 
   {
     Application.Run(new MainForm());
   }
   private void MainForm_Resize(object sender, System.EventArgs e)
   {
     Invalidate();
   }
   private void MainForm_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {
     Graphics g = e.Graphics;
     g.DrawString("www.nfex.ru", 
       new Font("Times New Roman", 20), 
       new SolidBrush(Color.Black), 
       this.DisplayRectangle);
   }
 }


      </source>


Use Brushes.Aquamarine to draw a Ellipse

<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Drawing2D; public class Form1 : System.Windows.Forms.Form{

 private System.ruponentModel.Container components = null;
 public Form1(){
   InitializeComponent();
       SetStyle(ControlStyles.Opaque, true);
 }
 protected override void Dispose( bool disposing ){
   if( disposing ){
     if (components != null) 
     {
       components.Dispose();
     }
   }
   base.Dispose( disposing );
 }
   protected override void OnPaint(PaintEventArgs e) {
        Graphics g = e.Graphics;
        g.FillRectangle(Brushes.White, ClientRectangle);
        g.FillEllipse(Brushes.Aquamarine, new Rectangle(60, 20, 50, 30));
   }
 private void InitializeComponent(){
   this.ruponents = new System.ruponentModel.Container();
   this.Size = new System.Drawing.Size(300,300);
   this.Text = "Form1";
 }
 static void Main() {
   Application.Run(new Form1());
 }

}


      </source>


Use Brushes.BlueViolet ro draw a Polygon

<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Drawing2D; public class Form1 : System.Windows.Forms.Form{

 private System.ruponentModel.Container components = null;
 public Form1(){
   InitializeComponent();
       SetStyle(ControlStyles.Opaque, true);
 }
 protected override void Dispose( bool disposing ){
   if( disposing ){
     if (components != null) 
     {
       components.Dispose();
     }
   }
   base.Dispose( disposing );
 }
   protected override void OnPaint(PaintEventArgs e) {
        Graphics g = e.Graphics;
        g.FillRectangle(Brushes.White, ClientRectangle);
        g.FillPolygon(Brushes.BlueViolet, new Point[] {
                                                         new Point(110, 10),
                                                         new Point(150, 10),
                                                         new Point(160, 40),
                                                         new Point(120, 20),
                                                         new Point(120, 60),
        });
   }
 private void InitializeComponent(){
   this.ruponents = new System.ruponentModel.Container();
   this.Size = new System.Drawing.Size(300,300);
   this.Text = "Form1";
 }
 static void Main() {
   Application.Run(new Form1());
 }

}


      </source>


Use Brush to draw a Rectangle

<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Drawing2D; public class Form1 : System.Windows.Forms.Form{

 private System.ruponentModel.Container components = null;
 public Form1(){
   InitializeComponent();
       SetStyle(ControlStyles.Opaque, true);
 }
 protected override void Dispose( bool disposing ){
   if( disposing ){
     if (components != null) 
     {
       components.Dispose();
     }
   }
   base.Dispose( disposing );
 }
   protected override void OnPaint(PaintEventArgs e) {
        Graphics g = e.Graphics;
        g.FillRectangle(Brushes.White, ClientRectangle);
        g.FillRectangle(Brushes.Red, new Rectangle(10, 10, 50, 50));
   }
 private void InitializeComponent(){
   this.ruponents = new System.ruponentModel.Container();
   this.Size = new System.Drawing.Size(300,300);
   this.Text = "Form1";
 }
 static void Main() {
   Application.Run(new Form1());
 }

}


      </source>