Csharp/C Sharp/2D Graphics/Pie
Arc Pie Demo
<source lang="csharp"> /* GDI+ Programming in C# and VB .NET by Nick Symmonds Publisher: Apress ISBN: 159059035X
- /
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; namespace MIsc2D_c {
/// <summary> /// Summary description for MIsc2D. /// </summary> public class MIsc2D : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.ListBox listBox1; /// <summary> /// Required designer variable. /// </summary> private System.ruponentModel.Container components = null; public MIsc2D() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.listBox1 = new System.Windows.Forms.ListBox(); this.SuspendLayout(); // // label1 // this.label1.Location = new System.Drawing.Point(40, 280); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(160, 16); this.label1.TabIndex = 0; // // label2 // this.label2.Location = new System.Drawing.Point(40, 296); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(160, 16); this.label2.TabIndex = 1; // // label3 // this.label3.Location = new System.Drawing.Point(40, 312); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(160, 16); this.label3.TabIndex = 2; // // listBox1 // this.listBox1.Location = new System.Drawing.Point(24, 200); this.listBox1.Name = "listBox1"; this.listBox1.Size = new System.Drawing.Size(192, 69); this.listBox1.TabIndex = 3; // // MIsc2D // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 373); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.listBox1, this.label3, this.label2, this.label1}); this.Name = "MIsc2D"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "MIsc2D"; this.Load += new System.EventHandler(this.MIsc2D_Load); this.ResumeLayout(false); } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new MIsc2D()); } private void MIsc2D_Load(object sender, System.EventArgs e) { } protected override void OnPaint(PaintEventArgs e) { Graphics G = e.Graphics; GraphicsPath p = new GraphicsPath(); PointF[] pts = { new PointF(50, 50), new PointF(150, 25), new PointF(200, 50)}; p.AddCurve(pts); p.AddRectangle(new Rectangle(60, 60, 50, 50)); p.AddPie(100, 100, 80, 80, 0, 35); G.DrawPath(Pens.Black,p); GraphicsPathIterator iter = new GraphicsPathIterator(p); label1.Text = "Num pts in path = " + iter.Count.ToString(); label2.Text = "Num subpaths in path = " + iter.SubpathCount.ToString(); label3.Text = "Path has curve = " + iter.HasCurve().ToString(); int StartIndex; int EndIndex; int i; bool IsClosed; // Rewind the Iterator. iter.Rewind(); // List the Subpaths. for(i=0;i<iter.SubpathCount;i++) { iter.NextSubpath(out StartIndex, out EndIndex, out IsClosed); listBox1.Items.Add("Start: " + StartIndex.ToString() + " End: " + EndIndex.ToString() + " IsClosed: " + IsClosed.ToString()); } } }
}
</source>
Draw a pie
<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.FillPie(Brushes.Chartreuse, new Rectangle(60, 60, 50, 50), 90, 210); } 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>