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,点击镂空的部分会穿透到下一层,而且两个镂空区域的交叉部分竟然是实心的,是不是感觉很神奇。

通过这个方法,我们可以实现很多效果,比如绘制一个不规则的控件,包括圆角矩形、三角形、圆形等。

你可能感兴趣的:(.net,c#)