這個(gè)需求不好辦。
“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來堅(jiān)持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)公司是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、軟件開發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!
建議用shape控件的Shap屬性設(shè)置為圓角矩形剛好包括住文本框,文本框設(shè)置為無邊框其背景色與窗體背景色相同,這樣文本框看起來就是圓角矩形了。也可以考慮在圓角矩形圖像(image控件)上放置文本框控件的方法來模擬,經(jīng)過恰當(dāng)設(shè)計(jì)的圖片和恰當(dāng)設(shè)置文本框控件的結(jié)合在一起,應(yīng)該可以做出比較逼真的效果。
使用Line方法,向Form,PictureBox這些控件都支持這個(gè)方法。
語法:
object.Line [Step] (x1, 1) [Step] (x2, y2), [color], [B][F]
如:
Me.Line (100,100)-(600,600), vbred, bf
加B這個(gè)參數(shù)就是矩形,加F就是用就邊框顏色填充
補(bǔ)充:
Color參數(shù)就是邊框顏色,如果省略,就用對(duì)象的ForeColor(前景色,就是字體的顏色) 屬性值
代碼:
Public?Class?Form1
'*********************************************************************???
'作者:章魚哥,QQ:3107073263?群:309816713???????
'如有疑問或好的建議請(qǐng)聯(lián)系我,大家一起進(jìn)步?????
'*********************************************************************?????
'繪制圓角矩形函數(shù)
Private?Function?GetRoundedRectPath(ByVal?rect?As?Rectangle,?ByVal?radius?As?Integer)?As?System.Drawing.Drawing2D.GraphicsPath
rect.Offset(-1,?-1)
Dim?RoundRect?As?New?Rectangle(rect.Location,?New?Size(radius?-?1,?radius?-?1))
Dim?path?As?New?System.Drawing.Drawing2D.GraphicsPath
path.AddArc(RoundRect,?180,?90)?????'左上角
RoundRect.X?=?rect.Right?-?radius???'右上角
path.AddArc(RoundRect,?270,?90)
RoundRect.Y?=?rect.Bottom?-?radius??'右下角
path.AddArc(RoundRect,?0,?90)
RoundRect.X?=?rect.Left?????????????'左下角
path.AddArc(RoundRect,?90,?90)
path.CloseFigure()
Return?path
End?Function
'繪制矩形
Private?Sub?DrawingRect()
Dim?g?As?Graphics?=?Me.CreateGraphics
Dim?Pen?As?New?Pen(Brushes.DarkRed,?2)
Dim?Hei?As?Integer?=?Me.Height
Dim?Wid?As?Integer?=?Me.Width
'矩形的位置和長(zhǎng)寬隨著窗體的變化而改變
Dim?Rec?As?New?Rectangle(Int(Wid?/?5),?Int(Hei?/?5),?Int(Wid?/?2),?Int(Hei?/?2))
'??g.DrawRectangle(Pen,?Rec)
'清楚現(xiàn)有的矩形
g.Clear(Me.BackColor)
g.DrawPath(Pen,?GetRoundedRectPath(Rec,?30))
End?Sub
Private?Sub?Form1_Paint(ByVal?sender?As?System.Object,?ByVal?e?As?System.Windows.Forms.PaintEventArgs)?Handles?MyBase.Paint
DrawingRect()
End?Sub
Private?Sub?Form1_SizeChanged(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.SizeChanged
Me.Invalidate()?'此函數(shù)可引發(fā)Paint事件
End?Sub
End?Class
效果截圖:
原窗口:
縮小后:
請(qǐng)用 API 函數(shù) RoundRect。
例子(點(diǎn)擊窗體,畫圓角矩形):
Private Declare Function RoundRect Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Sub Form_Click()
Call RoundRect(Me.hdc, 10, 10, 110, 110, 10, 10)
End Sub
參數(shù):
hdc 設(shè)備上下文。比如 Me.hDC,Picture1.hDC就可以。
X1,Y1 左上角
X2,Y2 右下角
X3,Y3 圓角內(nèi)偏移(即圓角半徑,0表示直角)
上面的坐標(biāo)什么的都以像素計(jì),不同于VB默認(rèn)的Twip