C#指定控件的繪圖區域

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,點擊鏤空的部分會穿透到下一層,而且兩個鏤空區域的交叉部分竟然是實心的,是不是感覺很神奇。
圖片描述

通過這個方法,我們可以實現很多效果,比如繪製一個不規則的控件,包括圓角矩形、三角形、圓形等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章