Csharp/CSharp Tutorial/2D/Clip
Версия от 15:31, 26 мая 2010; (обсуждение)
Intersects With Clip Rectangle of Graphics
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());
}
}
Set clipping region
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());
}
}