Description de la source
Création d'un contour de fenêtre personnalisable avec coins arrondis, nouvelle couleur de fond, et déplaçable à souhait.
Code
> A INCLURE DANS LE FORMULAIRE PRINCIPAL
#Region "CONCEPTION GRAPHIQUE DU FORMULAIRE"
' --------------------------------------------------------------------------------------------------------------------------------------------------
' DESSINER UN CADRE AUX BORDS ARRONDIS (Découpe de la fenêtre / Extérieur transparent - Intérieur coloré, Ajout d'une bordure (Choix de la couleur et épaisseur du trait)
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Dim grfx As Graphics = e.Graphics
grfx.SmoothingMode = SmoothingMode.HighQuality
Dim grfxPath1 As New GraphicsPath
Dim monRectangle As New Rectangle(12, 2, Me.Width - 24, Me.Height - 4)
grfxPath1.AddRectangle(monRectangle)
' ----------------------------------- DEFINITION DE LA COULEUR DE "BRUSH" -----------------------------------------
Dim Couleur As Color = Color.FromArgb(100, 100, 100)
Dim myBrush As SolidBrush
myBrush = New SolidBrush(Couleur)
' -----------------------------------------------------------------------------------------------------------------
Dim co As New Pen(Brushes.White, 2.0F)
grfx.DrawPath(co, GetRoundedRectPath(monRectangle, 10)) ' Bordure de fenêtre
grfx.FillPath(myBrush, GetRoundedRectPath(monRectangle, 10)) ' Intérieur de fenêtre
grfx.SetClip(grfxPath1, CombineMode.Replace)
End Sub
' BLOC DE FONCTIONS POUR BOUGER LA FENETRE DANS L'ECRAN
Private MouseCurrentPos, MouseNewPos, formPos, formNewPos As Point
Private _mouseDown As Boolean = False
Private Sub Frm_mapage_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseDown
' quand le clic est enfoncé, il faut activer le flag _mousedown à true et stocker la position courrante du curseur
If e.Button = MouseButtons.Left Then
_mouseDown = True
MouseCurrentPos = Control.MousePosition
formPos = Location
End If
End Sub 'Form1_MouseDown
Private Sub Frm_mapage_Add_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseUp
'quand le clic est relaché, il faut activer le flag _mousedown à false
If e.Button = MouseButtons.Left Then
_mouseDown = False
End If
End Sub
Private Sub Frm_mapage_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseMove
' déplacement de la form
If _mouseDown = True Then
MouseNewPos = Control.MousePosition ' la position de la souris à l'écran
formNewPos.X = MouseNewPos.X - MouseCurrentPos.X + formPos.X
formNewPos.Y = MouseNewPos.Y - MouseCurrentPos.Y + formPos.Y
Location = formNewPos
formPos = formNewPos
MouseCurrentPos = MouseNewPos
End If
End Sub
' --------------------------------------------------------------------------------------------------------------------------------------------------
#End Region
> A METTRE DANS UN MODULE :
Public Function GetRoundedRectPath(ByVal Rect As System.Drawing.Rectangle, ByVal Radius As Integer) As GraphicsPath
Dim Diam As Integer = Radius * 2.5
Dim ArcRect As New System.Drawing.Rectangle(Rect.Location, New Size(Diam, Diam))
Dim Path As New System.Drawing.Drawing2D.GraphicsPath()
Path.AddArc(ArcRect, 180, 90)
ArcRect.X = Rect.Right - Diam
Path.AddArc(ArcRect, 270, 90)
ArcRect.Y = Rect.Bottom - Diam
Path.AddArc(ArcRect, 0, 90)
ArcRect.X = Rect.Left
Path.AddArc(ArcRect, 90, 90)
Path.CloseFigure()
Return Path
End Function
' Enjoy ! ;-)
Edit : Ajout des balises de code (jordane)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.