Csharp/CSharp Tutorial/2D/Clip
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>