Csharp/CSharp Tutorial/2D/Clip

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

Intersects With Clip Rectangle of Graphics

<source lang="csharp">using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; public class Form1 : Form {

   protected override void OnPaint(PaintEventArgs e) {
   Graphics g = e.Graphics;
   g.FillRectangle(Brushes.White, this.ClientRectangle);
   SizeF sizeF = g.MeasureString("Test", this.Font);
   StringFormat sf = new StringFormat();
   sf.LineAlignment = StringAlignment.Center;
   int cellHeight = (int)sizeF.Height + 4;
   int cellWidth = 80;
   int nbrColumns = 50;
   int nbrRows = 50;
   for (int row = 0; row < nbrRows; ++row)
   {
     for (int col = 0; col < nbrColumns; ++col)
     {
       Point cellLocation = new Point(col * cellWidth,  row * cellHeight);
       Rectangle cellRect = new Rectangle(cellLocation.X, cellLocation.Y, cellWidth, cellHeight);
       if (cellRect.IntersectsWith(e.ClipRectangle)){
         Console.WriteLine("Row:{0} Col:{1}", row, col);
         g.FillRectangle(Brushes.LightGray, cellRect);
         g.DrawRectangle(Pens.Black, cellRect);
         String s = String.Format("{0},{1}", col, row);
         g.DrawString(s, this.Font, Brushes.Black, cellRect, sf);
       }
     }
   }
   }
   public static void Main() {
       Application.Run(new Form1());
   }

}</source>

Set clipping region

<source lang="csharp">using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Text; using System.Windows.Forms; public class Form1 : Form {

   protected override void OnPaint(PaintEventArgs e) {
       Graphics g = e.Graphics;
       g.FillRectangle(Brushes.White, this.ClientRectangle);
       GraphicsPath gp = new GraphicsPath();
       gp.AddString("Swirly", new FontFamily("Times New Roman"), (int)(FontStyle.Bold | FontStyle.Italic), 144, new Point(5, 5), StringFormat.GenericTypographic);
       g.SetClip(gp);
       g.DrawImage(new Bitmap("swirly.jpg"), this.ClientRectangle);
       gp.Dispose();
   }
   public static void Main() {
       Application.Run(new Form1());
   }

}</source>