国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#個性化窗體界面的制作方法

2023-05-10 18:49:29
字體:
來源:轉載
供稿:網友

引言:

誰都希望自己的應用程序能讓人留下一個深刻的印象,讓自己的程序窗體有一件與眾不同的"外衣"是一個好辦法。試想:在一大堆的普通窗口中突然跳出一個很酷的界面,一定能讓人眼睛一亮進而產生興趣的。

在VB,VC中如何定制可伸縮個性化窗口早就不是什么秘密了,已經有了大量相關的文章進行介紹,無非都是如何調用系統API之類的方法,但是在.Net中調用API卻相對比較麻煩,所以使用.Net制作個性化窗體的文章也有一些,一般都是使用透明背景加圖片的方式,所以不能移動或者不能任意放大縮小窗體。

那有沒有不需要調用系統API的方法來實現可伸縮的個性化窗體的辦法呢?當然有,.Net Framework提供了一套非常強大的系統類庫,我們下面就要做一個使用"純".Net打造的可伸縮個性化窗體。

我們需要將窗體所有的"皮膚"全部換成我們自己定義的,包括標題欄,邊框和系統按紐等,所以我們首先需要定做一套自己的皮膚圖形文件。因為窗體是可伸縮的,所以我們不能簡單的取一整幅圖片來作為窗體皮膚,而是根據需要先將圖片切割為不同的部分,一般來說,有以下圖示幾大部分(紅線為切割線):

根據方位,將圖片各部分命名為:Bottom_Left,Bottom_Middle,Bottom_Right,Middle_Left,Middle_Right,Top_Left,Top_Middle,Top_Right,SysButton_Min,SysButton_Max,SysButton_Close,SysButton_Restore等。注意,有些圖片是可以伸縮的地方,比如Middle_Left,Bottom_Middle等處的圖片可以只是一小塊,以后需要進行重復貼圖。而有些固定大小的圖片,比如Bottom_Left,Top_Left等以后只用貼一次,實際應用的時候要注意區分。

采用以上原則,你便可以制作皮膚圖片,圖示如下:

然后可以將這些圖片放到ImageList控件或資源文件中供程序調用。(關于如何制作資源文件請參考:Visual C#資源文件編程--創建資源文件)

接下來,我們使用Visual Studio .Net新建一個Windows應用程序的項目,在窗體的屬性設置中,將窗體的FormBorderStyle屬性設置為None(無邊框樣式),如下圖所示:

定義一個資源管理器:

private ResourceManager rm ;

然后使用以下的方法在Form的構造函數中將圖片取出來(資源文件名為Skin.resources):

rm = new ResourceManager("SkinWindow.Skin", Assembly.GetExecutingAssembly());
        Bottom_Left = (Bitmap)rm.GetObject("Bottom_Left");

…(其它的圖片也按照此方法取)

重載Form的OnPaint事件:

Graphics g = e.Graphics;//手工畫窗體的各個部分

DrawMiddle_Left(e.Graphics);//畫左邊框

DrawBottom_Middle(e.Graphics);//畫下邊框

DrawMiddle_Right(e.Graphics);//畫右邊框

DrawBottom_Left(e.Graphics);//畫左下角

DrawBottom_Right(e.Graphics);//畫右下角

DrawTop_Left(e.Graphics);//畫標題欄左邊

DrawTop_Right(e.Graphics);//畫標題欄右邊

DrawTop_Middle(e.Graphics);//畫標題欄中間

DrawSys_Button(e.Graphics);//畫系統按紐

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宿迁市| 时尚| 永宁县| 郯城县| 霍邱县| 石渠县| 武安市| 北碚区| 从化市| 城口县| 疏勒县| 河北省| 平和县| 南皮县| 湾仔区| 阿尔山市| 昌黎县| 大余县| 元江| 祥云县| 青河县| 吉木乃县| 邓州市| 丹阳市| 区。| 苗栗市| 十堰市| 澎湖县| 霞浦县| 德惠市| 内丘县| 象山县| 洛隆县| 常德市| 河北省| 徐汇区| 涞水县| 林芝县| 枞阳县| 辰溪县| 廊坊市|