Csharp/C Sharp by API/System.Drawing/Region

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

new Region(GraphicsPath gp)

<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;
 using System.Drawing.Imaging;
 public class Form1 : System.Windows.Forms.Form
 {
   public Form1()
   {
     InitializeComponent();
   }
   private void InitializeComponent()
   {
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 273);
     this.Text = "";
     this.Resize += new System.EventHandler(this.Form1_Resize);
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   }
   static void Main() 
   {
     Application.Run(new Form1());
   }
   private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {      
     Graphics g = e.Graphics;
     g.FillRectangle(Brushes.White, this.ClientRectangle);
     GraphicsPath gp = new GraphicsPath();
     // Create an open figure
     gp.AddLine(10, 10, 10, 50);
     gp.AddLine(10, 50, 50, 50);
     // Start a new figure
     gp.StartFigure();
     gp.AddLine(60, 10, 60, 50);
     gp.AddLine(60, 50, 100, 50);
     gp.CloseFigure();
     gp.AddEllipse(new Rectangle(110, 10, 40, 40));
     // Create a Region whose boundary is the above GraphicsPath 
     Region reg = new Region(gp);
     g.FillRegion(Brushes.Green, reg);
     reg.Dispose();
     gp.Dispose();
   }
   private void Form1_Resize(object sender, System.EventArgs e)
   {
     Invalidate();
   }
 }
  
 </source>


Region.Exclude

<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;
 using System.Drawing.Imaging;
 public class Form1 : System.Windows.Forms.Form
 {
   public Form1()
   {
     InitializeComponent();
   }
   private void InitializeComponent()
   {
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 273);
     this.Text = "";
     this.Resize += new System.EventHandler(this.Form1_Resize);
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   }
   static void Main() 
   {
     Application.Run(new Form1());
   }
   private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {      
     Graphics g = e.Graphics;
     g.FillRectangle(Brushes.White, this.ClientRectangle);
     Region r = new Region(new Rectangle(30, 30, 30, 60));
     r.Exclude(new Rectangle(40, 40, 10, 10));
     g.FillRegion(Brushes.Orange, r);
     r.Dispose();
   }
   private void Form1_Resize(object sender, System.EventArgs e)
   {
     Invalidate();
   }
 }
  
 </source>


Region.IsEmpty

<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;
 using System.Drawing.Imaging;
 public class Form1 : System.Windows.Forms.Form
 {
   public Form1()
   {
     InitializeComponent();
   }
   private void InitializeComponent()
   {
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 273);
     this.Text = "";
     this.Resize += new System.EventHandler(this.Form1_Resize);
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   }
   static void Main() 
   {
     Application.Run(new Form1());
   }
   private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {      
     Graphics g = e.Graphics;
     g.FillRectangle(Brushes.White, this.ClientRectangle);
     Region r = new Region(new Rectangle(30, 30, 30, 60));
     r.Exclude(new Rectangle(40, 40, 10, 10));
     g.FillRegion(Brushes.Orange, r);
     Console.WriteLine(r.IsEmpty(g) ? " - is empty"
                      : " - is non-empty");
     r.Dispose();
   }
   private void Form1_Resize(object sender, System.EventArgs e)
   {
     Invalidate();
   }
 }
  
 </source>


Region.IsInfinite

<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;
 using System.Drawing.Imaging;
 public class Form1 : System.Windows.Forms.Form
 {
   public Form1()
   {
     InitializeComponent();
   }
   private void InitializeComponent()
   {
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 273);
     this.Text = "";
     this.Resize += new System.EventHandler(this.Form1_Resize);
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   }
   static void Main() 
   {
     Application.Run(new Form1());
   }
   private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {      
     Graphics g = e.Graphics;
     g.FillRectangle(Brushes.White, this.ClientRectangle);
     Region r = new Region(new Rectangle(30, 30, 30, 60));
     r.Exclude(new Rectangle(40, 40, 10, 10));
     g.FillRegion(Brushes.Orange, r);
     Console.WriteLine(r.IsInfinite(g) ? " - is infinite"
                       : " - is finite");
     r.Dispose();
   }
   private void Form1_Resize(object sender, System.EventArgs e)
   {
     Invalidate();
   }
 }
  
 </source>


Region.IsVisible

<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;
 using System.Drawing.Imaging;
 public class Form1 : System.Windows.Forms.Form
 {
   public Form1()
   {
     InitializeComponent();
   }
   private void InitializeComponent()
   {
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 273);
     this.Text = "";
     this.Resize += new System.EventHandler(this.Form1_Resize);
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   }
   static void Main() 
   {
     Application.Run(new Form1());
   }
   private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {      
     Graphics g = e.Graphics;
     g.FillRectangle(Brushes.White, this.ClientRectangle);
     Region r = new Region(new Rectangle(30, 30, 30, 60));
     r.Exclude(new Rectangle(40, 40, 10, 10));
     g.FillRegion(Brushes.Orange, r);
     PointF pf = new PointF(35.0f, 30.0f);
     Console.WriteLine((r.IsVisible(pf) ? " - includes"
                        : " - excludes")
               + " the point (35.0, 50.0)");
     r.Dispose();
   }
   private void Form1_Resize(object sender, System.EventArgs e)
   {
     Invalidate();
   }
 }
  
 </source>


Region.Union

<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;
 using System.Drawing.Imaging;
 public class Form1 : System.Windows.Forms.Form
 {
   public Form1()
   {
     InitializeComponent();
   }
   private void InitializeComponent()
   {
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 273);
     this.Text = "";
     this.Resize += new System.EventHandler(this.Form1_Resize);
     this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
   }
   static void Main() 
   {
     Application.Run(new Form1());
   }
   private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
   {      
     Graphics g = e.Graphics;
     g.FillRectangle(Brushes.White, this.ClientRectangle);
     Region reg = new Region();
     reg.MakeEmpty();
     GraphicsPath gp = new GraphicsPath();
     gp.AddEllipse(10, 10, 50, 50);
     reg.Union(gp);
     gp.Reset();
     gp.AddLine(40, 40, 70, 10);
     gp.AddLine(70, 10, 140, 140);
     gp.CloseFigure();
     reg.Union(gp);
     reg.Union(new Rectangle(40, 50, 60, 60));
     // Set the clipping region
     g.SetClip(reg, CombineMode.Replace);
     g.FillRectangle(Brushes.Green, this.ClientRectangle);
     gp.Dispose();
     reg.Dispose();
   }
   private void Form1_Resize(object sender, System.EventArgs e)
   {
     Invalidate();
   }
 }
  
 </source>