Csharp/C Sharp/2D Graphics/Brush
Содержание
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>