Csharp/C Sharp/2D Graphics/Region Clip

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

Clip many shapes

using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
public class Form1 : Form
{
    private System.Windows.Forms.CheckBox chkClipping;
  public Form1() {
        InitializeComponent();
  }
  private void checkBox1_CheckedChanged(object sender, EventArgs e)
  {
    Invalidate();
  }  
  private void Form1_Paint(object sender, PaintEventArgs e)
  {
    e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
    GraphicsPath path = new GraphicsPath();
    
    Region clippingRegion = new Region(path);
    if (chkClipping.Checked) e.Graphics.Clip = clippingRegion;
    e.Graphics.ResetClip();
    
    path = new GraphicsPath();
    path.AddString("www.nfex.ru", new FontFamily("Verdana"), 0, 70, new Point(10, 130), new StringFormat());
    e.Graphics.DrawPath(Pens.Blue, path);
    clippingRegion = new Region(path);
    if (chkClipping.Checked) e.Graphics.Clip = clippingRegion;
    for (int i = 0; i < 40; i++)
    {
      e.Graphics.DrawEllipse(Pens.Red, 180 - i*3, 180 - i*3, i*6, i*6);      
    }
    clippingRegion.Dispose();
    path.Dispose();
  }
  private void InitializeComponent()
  {
    this.chkClipping = new System.Windows.Forms.CheckBox();
    this.SuspendLayout();
    // 
    // chkClipping
    // 
    this.chkClipping.AutoSize = true;
    this.chkClipping.Checked = true;
    this.chkClipping.CheckState = System.Windows.Forms.CheckState.Checked;
    this.chkClipping.Location = new System.Drawing.Point(12, 300);
    this.chkClipping.Name = "chkClipping";
    this.chkClipping.Size = new System.Drawing.Size(80, 17);
    this.chkClipping.TabIndex = 0;
    this.chkClipping.Text = "Use Clipping";
    this.chkClipping.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(292, 329);
    this.Controls.Add(this.chkClipping);
    this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    this.Name = "Form1";
    this.Text = "Clipping";
    this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
    this.ResumeLayout(false);
    this.PerformLayout();
  }
  [STAThread]
  static void Main()
  {
    Application.EnableVisualStyles();
    Application.Run(new Form1());
  }
}


Text region clips shape

using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
public class Form1 : Form
{
    private System.Windows.Forms.CheckBox chkClipping;
  public Form1() {
        InitializeComponent();
  }
  private void checkBox1_CheckedChanged(object sender, EventArgs e)
  {
    Invalidate();
  }  
  private void Form1_Paint(object sender, PaintEventArgs e)
  {
    e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
    Rectangle rectangle = new Rectangle(10, 10, 250, 50);
    GraphicsPath path = new GraphicsPath();
    path.AddEllipse(rectangle);
    e.Graphics.DrawPath(Pens.Red, path);
    
    Region clippingRegion = new Region(path);
    if (chkClipping.Checked) e.Graphics.Clip = clippingRegion;
    e.Graphics.DrawString("www.nfex.ru",new Font("Verdana", 36, FontStyle.Bold), Brushes.Black, 10, 10);
    clippingRegion.Dispose();
    path.Dispose();
  }
  private void InitializeComponent()
  {
    this.chkClipping = new System.Windows.Forms.CheckBox();
    this.SuspendLayout();
    // 
    // chkClipping
    // 
    this.chkClipping.AutoSize = true;
    this.chkClipping.Checked = true;
    this.chkClipping.CheckState = System.Windows.Forms.CheckState.Checked;
    this.chkClipping.Location = new System.Drawing.Point(12, 300);
    this.chkClipping.Name = "chkClipping";
    this.chkClipping.Size = new System.Drawing.Size(80, 17);
    this.chkClipping.TabIndex = 0;
    this.chkClipping.Text = "Use Clipping";
    this.chkClipping.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(292, 329);
    this.Controls.Add(this.chkClipping);
    this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    this.Name = "Form1";
    this.Text = "Clipping";
    this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
    this.ResumeLayout(false);
    this.PerformLayout();
  }
  [STAThread]
  static void Main()
  {
    Application.EnableVisualStyles();
    Application.Run(new Form1());
  }
}