C#怎麼裁剪/隱藏/擦除某個控件的其中一部分呢,網上很多教程都是基於一張透明圖片去生成區域,然後在這個區域繪製控件,其實不用圖片也可以實現,我在這裏找到了答案。實現代碼如下:
GraphicsPath controlPath = new System.Drawing.Drawing2D.GraphicsPath();
// 繪製兩個區域
controlPath.AddRectangle(new System.Drawing.Rectangle(10, 10, 50, 50));
controlPath.AddRectangle(new System.Drawing.Rectangle(50, 50, 100, 100));
// 反選區域
Region r = new Region(new Rectangle(Point.Empty, this.ClientSize));
r.Exclude(controlPath);
// 設置button1繪圖區域
button1.Region = r; // 如果不需要反選的話,把r換成controlPath也是可以的
下面是效果,實現了一個鏤空的button,點擊鏤空的部分會穿透到下一層,而且兩個鏤空區域的交叉部分竟然是實心的,是不是感覺很神奇。
通過這個方法,我們可以實現很多效果,比如繪製一個不規則的控件,包括圓角矩形、三角形、圓形等。