轉貼 譯 C WinForm中實現異形窗體 控制項

2021-04-02 17:23:26 字數 1330 閱讀 3747

c#winform中實現異形窗體/控制項

主頁:

www.farproc.com

blog

:blog.csdn.net/uoyevoli

製作異形窗體或控制項的思路一般都是想辦法生成乙個

region

,然後設定給指定的視窗或控制項。生成

region

的方法有很多,最常用的就是從一幅生成,把該中的透明色部分「摳」掉,剩下的部分作為乙個

region

。設定視窗或控制項的

region

可以用setwindowrgn api

,不過.net framework

封裝了這個操作,在

c#中只要對視窗或控制項的

region

屬性賦值就可以了。下面我就把我在

c#中實現異形窗體的核心**貼出來給大家看看,有什麼意見儘管提,別客氣哦j

首先,是乙個根據

bitmap

物件生成

region

的方法:

///

///取得乙個中非透明色部分的區域。

/// ///

取其區域的。

///

透明色。

///

中非透明色部分的區域

private

region bmprgn(bitmap picture, color transparentcolor)

}

else

//非透明色

}//if curcolor

istransrgn = curcolor == transparentcolor;

}//for x

}//for y

return rgn;

}

原理很簡單,就是對該逐行掃瞄,在每一行中把那些非透明色的矩形(只有乙個畫素高)合併(union)到乙個region物件中,當掃瞄完整個,得到的也就是我們想要的region了。這種演算法在很多文章裡都有介紹的。

有了region,下面就簡單了:

this

.region = bmprgn(new bitmap("d://a.bmp"), color.fromargb(0, 0, 0));

上面的**就是把d:/a.bmp的輪廓作為主視窗的region的,假設該的背景黑色(color.fromargb(0, 0, 0))。

其實不光是form,任何控制項都可以用這個方法設定region,製作出異形控制項。

好文稍縱即逝,不得不轉一備份,原文出自:http://www.farproc.com/article/showarticle.asp?articleid=191

C WinForm中實現異形窗體 控制項

製作異形窗體或控制項的思路一般都是想辦法生成乙個 region 然後設定給指定的視窗或控制項。生成 region 的方法有很多,最常用的就是從一幅生成,把該中的透明色部分 摳 掉,剩下的部分作為乙個 region 設定視窗或控制項的 region 可以用setwindowrgn api 不過.net...

C WinForm中實現異形窗體 控制項

主頁 www.farproc.com blog blog.csdn.net uoyevoli 製作異形窗體或控制項的思路一般都是想辦法生成乙個 region 然後設定給指定的視窗或控制項。生成 region 的方法有很多,最常用的就是從一幅生成,把該中的透明色部分 摳 掉,剩下的部分作為乙個 reg...

C WinForm中實現異形窗體 控制項

製作 異形窗體或控制項的思路一般都是想辦法生成乙個region,然後設定給指定的視窗或控制項。生成region的方法有很多,最常用的就是從一幅生成,把該中的透明色部分 摳 掉,剩下的部分作為乙個region。設定視窗或控制項的region可以用setwindowrgn api,不過.net fram...