نمايي زيبا براي فرمهاي برنامه
براي داشتن همچنين فرمي بصورت زير عمل ميكنيم:
ابتدا خاصيت FormBorderStyle فرم را به حالت None ست ميكنيم تا فرم هيچ گونه حاشيه اي نداشته باشد.
يك ماژول با هر نامي ايجاد كرده و متغيرها و توابع زير زير را در آن تعريف ميكنيم
کد:
Public Declare Function CreateRoundRectRgn Lib "gdi32.dll" ( _
ByVal X1 As Int32, _
ByVal Y1 As Int32, _
ByVal X2 As Int32, _
ByVal Y2 As Int32, _
ByVal X3 As Int32, _
ByVal Y3 As Int32) As Int32
Public Declare Function SetWindowRgn Lib "user32.dll" ( _
ByVal hWnd As Int32, _
ByVal hRgn As Int32, _
ByVal bRedraw As Boolean) As Int32
Public newPoint As New System.Drawing.Point
Public a As Integer
Public b As Integer
حال در رويداد لود فرم روال RoundFormCorners() را فرامي خوانيم.
کد:
Public Sub RoundFormCorners()
'Round the corners of the form
SetWindowRgn(Me.Handle.ToInt32, CreateRoundRectRgn(0, 0, _
Me.Width, Me.Height, _
25, 25), _
True)
SetWindowRgn(Me.Handle.ToInt32, CreateRoundRectRgn(0, 0, _
Me.Width, Me.Height, _
25, 25), _
True)
End Sub
حال يك مشكل باقي ميماند : فرم ما فاقد حاشيه است و جابجا نميشود(زيبايي چنداني هم ندارد). براي حل اين مشكل 4 برچسب در فرم قرار داده و خاصيت Duck هر يك را به سمت بالا،پايين،چپ و راست ست ميكنيم(دو برچسب كناري هر چه عرض كمتري داشته باشند زيباتر ديده ميشوند مثلا 2).براي جابجا كردن فرم در رويداد MouseDown برچسبهاي بالا و پاييين كد زير را وارد ميكنيم
کد:
a = Me.MousePosition.X - Me.Location.X
b = Me.MousePosition.Y - Me.Location.Y
کد:
و در رويداد MouseMove برچسبهاي بالا و پايين كد زير را :
If e.Button = MouseButtons.Left Then
newPoint = Me.MousePosition
newPoint.X = newPoint.X - (a)
newPoint.Y = newPoint.Y - (b)
Me.Location = newPoint
End If
در اين حالت با كليك بر روي هر كدام از برچسبهاي بالا و پايين و كشيدن آن به هر جايي كه خواستيم ميتوانيم فرم را جابجا كنيم.
فرمهای جمع شونده با گرادیان(*********)
یک کنترل جالب مشابه عکس بالا دارم. دوستان لطف کنند یه سایت معرفی کنند تا آپلود کنم.