Csharp/C Sharp/2D Graphics/Pie

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

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>