無框圓角矩形窗體

2021-06-06 10:19:22 字數 2120 閱讀 9336

對於c# 更改窗體外觀感覺並不那麼輕鬆 更改窗體外觀涉及到使用gdi+ 我所知道的有兩種方法:

有系統邊框的窗體 處理窗體的paint方法,在paint方法中 引數e.graphics屬性將返回乙個物件 用來作畫 但是這個畫布的區域是窗體的客戶區 所以無法修改到窗體的標題欄 邊框等位置的。要更改標題欄只有獲取整個視窗的控制代碼 這樣建立的畫布是整個窗體區域 但是對於我這樣的初學者來說 對於控制代碼 windowsapi還很不熟悉 我相信大多數的初學者或者學生都和我有相同的困惑 所以我使用了第二種辦法 無邊框窗體

無邊框的窗體 把formborderstyle的屬性設定為none 就去掉了邊框 剩下的窗體客戶區和和整個窗體大小是相同的 再使用e.graphics作畫就是在整個窗體上作畫 我主要也是描述這樣的一種方法 相信對很多和我一樣的人有很多幫助

對於乙個窗體 它除了外觀以外還有2個主要特徵:1.可以拖動 可以拖拽大小 2.具有控制按鈕 關閉 最大化 最小化。我主要描述第二種方法

回到主題 介紹處理無邊框窗體的經驗,下面是最終效果:

這就是乙個無邊框窗體 可以注意到它的外觀 四個角是圓的 有控制按鈕 並且還可以拖拽,當滑鼠移動到窗體的四個角和邊緣的時候可以拖拽大小

這個窗體沒有標題欄和邊框的限制 控制項可以放在窗體上任何地方

下面就是直奔主題了:

先說一說製作這個窗體的思路(窗體整合自system.windows.forms.form):

1.設定formborderstyle屬性為none 讓它成為乙個無邊框窗體

2.設定窗體的region屬性 該屬性設定窗體的有效區域 而我們把窗體的有效區域設定為圓角矩形 窗體就變成圓角的了

3.自定義控制項 3個按鈕 控制窗體的最大化 最小化 還原 關閉

4.使窗體可以拖動 在邊緣按下滑鼠可以拖拽大小

主要涉及gdi+中兩個重要的類 graphics和graphicspath類 分別位於system.drawing和system.drawing.drawing2d

首先我們建立乙個c# windows窗體應用程式專案 將預設的form1改名成mainform 設定formborderstyle屬性為none 讓它成為乙個無邊框窗體

接著我們需要這樣乙個函式 private void setwindowregion() 此函式設定窗體有效區域為圓角矩形,以及乙個輔助函式 private graphicspath getroundedrectpath(rectangle rect, int radius)此函式用來建立圓角矩形路徑,將在setwindowregion()中呼叫它

public void setwindowregion()

private graphicspath getroundedrectpath(rectangle rect, int radius)

在窗體尺寸改變的時候我們需要呼叫setwindowregion()將窗體變成圓角的

private

void

mainform_resize(

object

sender, eventargs e)

到此 窗體的形狀部分就完成了 通過建立不同的graphicspath物件 可以將窗體設定為任意形狀 三角形 六邊形 橢圓 以及任何不規則圖形來製作不規則窗體

然後可以通過給窗體設定背景或者在窗體上作畫來更改外觀 無論是什麼形狀只要超過了窗體有效區域的部分都會被裁掉 這樣給換**帶來了極大的方便 只需要換一張背景圖而已 不需要去做圓角 就像迅雷7那樣 換**就換一張背景

然後是自定義控制項 3個按鈕 通過gdi+可以繪製比較漂亮的按鈕 這部分相對簡單很多 就不敘述了,這方面的資料也很好找

將這3個按鈕控制項拖到窗體右上角設定它們的anchor屬性為top right 讓它們的位置始終相對於窗體右上角改變 並編寫它們的單擊事件處理** 模擬窗體的最大化最小化和關閉

這裡需要注意一點的就是 最大化的時候直接使用this.windowstate = formwindowstate.maximized會遮蓋工作列 在執行這行**前先限制窗體的最大尺寸為螢幕的工作區

Qt 圓角控制項,圓角窗體,滑鼠拖動窗體

1.設定圓角控制項 connectpb setstylesheet border 2px groove gray border radius 10px padding 2px 4px 設定圓角按鍵 2.設定圓角窗體 setwindowflags qt framelesswindowhint qbit...

製作圓角矩形框(可改變寬度)

首先用photoshop新建乙個寬300px,高30px的畫布,透明 製作成此影象 儲存。通過旋轉畫布分別製出其他三個角。製作原理如圖 具體步驟 然而,現實是殘酷的,我的學習並不那麼盡人意,我的未來能那麼好嗎?我在懷疑著,我的心裡也漸漸陰暗起來。特別是踏上初三的漫漫征程後,青春期的叛逆性就日益在我的...

《數學》圓角矩形,矩形重疊 一

乙個矩形四個角的弧度,不是思考如何畫,而是思考如何來計算,計算機又是如何計算的呢?長,寬,然後取寬的n 寬作為半徑,然後類似圓規畫圓去繪製半徑。我們先用css3來繪製乙個矩形,可以用div來做實驗,並在div中輸入文字,類似乙個矩形裡面再有乙個矩形,有一些引數需要設定 1,div邊框厚度 borde...