Csharp/CSharp Tutorial/2D/Clip

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

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());
    }
}