swift畫圓角對話方塊

2021-07-12 02:42:48 字數 2054 閱讀 4239

這裡的圓角的對話方塊 我指的是類似安卓的.9.png那樣的圓角的對話方塊,就是這個樣子的。

分解出來就是乙個實心的圓角矩形加乙個三角形,外面用直線描邊,裡面寫一些居中懸浮的字串而已。

1.畫圓角矩形  假設x1,y1為右下角的點

let rx:cgfloat =4      //圓角弧度

cgcontextsetfillcolorwithcolor(context, uicolor(red: 248/255, green:248/255, blue:248/255, alpha:1).cgcolor)//設定畫筆顏色

cgcontextmovetopoint(context, x1, y1 - rx); // 右下角

cgcontextaddarctopoint(context, x1, y1, x2, y1, rx); // 右下角度-左下角

cgcontextaddarctopoint(context, x2, y1, x2, y2, rx); // 左下角-左上角

cgcontextaddarctopoint(context, x2, y2, x1, y2, rx); //左上角-右上角

cgcontextaddarctopoint(context, x1, y2, x1, y1, rx); //右上角-右下腳

cgcontextclosepath(context);//封起來

cgcontextdrawpath(context, cgpathdrawingmode.fill) //根據座標繪製路徑

2.畫三角形

取圓角矩形的底邊上某個點(xs,y1),這裡隨便舉個栗子啦   這裡x2

let spoint = [cgpointmake(xs, y1),cgpointmake(xs + 10, y1),cgpointmake(xs + 5, y1+5)];

cgcontextaddlines(context, spoints5, 3);//新增線

cgcontextclosepath(context);//封起來

cgcontextdrawpath(context, cgpathdrawingmode.fill)//根據座標繪製路徑

這樣基本輪廓就出來啦,乙個尖尖向下的對話方塊

3.描邊

就是畫線咯,注意在三角形區域不要畫錯喔

cgcontextsetlinewidth(context, 0.5)//設定畫筆寬度

cgcontextsetstrokecolorwithcolor(context, uicolor(red: 204/255, green:204/255, blue:204/255, alpha:1).cgcolor)//設定畫筆顏色

cgcontextmovetopoint(context, x1, y1); //起點

cgcontextaddlinetopoint(context, xs+10, y1);

cgcontextaddlinetopoint(context, xs+5, y1+5); //斜邊1

cgcontextaddlinetopoint(context, xs, y1); //斜邊2

cgcontextaddlinetopoint(context, x2, y1);

cgcontextaddlinetopoint(context, x2, y2);

cgcontextaddlinetopoint(context, x1, y2);

cgcontextaddlinetopoint(context, x1, y1);

cgcontextstrokepath(context) //關閉路徑

寫到這裡,萌萌噠圓角對話方塊就寫好咯,加下來在裡面挖坑寫字串就可以了

vc 對話方塊 圓角視窗

為了實現圓角的對話方塊視窗,這裡主要用兩個函式,createroundrectrgn,和setwindowrgn 程式先通過getwindowrgn函式得到視窗矩形,然後通過createroundrectrgn函式建立乙個圓角矩形,最後通過setwindowrgn函式改變視窗的形狀。具體操作如下 1...

對話方塊 訊息對話方塊

我們在使用windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以mfc提供了兩個函式可以直接生成指定風格的訊息對話方塊,而不需要我們在每次使用的時候都要去建立對話方塊資源和生成對話方塊類等。這兩個函式就是cwnd類的成員函式mes...

QT 使用QSS實現圓角對話方塊

圓角對話方塊有很多辦法,一般是用 重繪的方式,比較複雜,這乙個高仿360的介面給的 比較複雜,放入我的qdialog的視窗總是不生效 mainwindow mainwindow qwidget parent qmainwindow parent ui new ui mainwindow 實際發現,可...