對於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...