星期六, 8月 17, 2024

[C#] Graphics.SetClip 方法

根據官方文件 - Graphics.SetClip 方法 來理解 SetClip() 如何使用
Sets the clipping region of this Graphics to the Clip property of the specified Graphics.
白話翻譯就是在 Graphics 上限定區域,只能繪製該區域,無法超過該區域
namespace GraphicsNETSample
{
    public partial class FrmSetClip : Form
    {
        public FrmSetClip()
        {
            InitializeComponent();
        }

        private void FrmSetClip_Paint(object sender, PaintEventArgs e)
        {
            SetClipRectangle(e);
        }

        private void SetClipRectangle(PaintEventArgs e)
        {
            // 繪製一個 300 X 300 矩形的灰色背景
            Rectangle bgRect = new Rectangle(0, 0, 300, 300);
            e.Graphics.FillRectangle(new SolidBrush(Color.LightGray), bgRect);

            // 限定在 Graphics 上繪製只能在該 100 X 100 矩形內
            Rectangle clipRect = new Rectangle(0, 0, 100, 100);
            e.Graphics.SetClip(clipRect);

            // 故意繪製一個同 300 X 300 灰色背景的矩形範圍
            // 但因為 Graphics 已經被限定在 100 X 100 矩形範圍內,
            // 所以只會繪製出 100 X 100 的紅色矩形
            e.Graphics.FillRectangle(new SolidBrush(Color.Red), bgRect);
        }
    }
}

沒有留言:

張貼留言