Faire des formes avec des coins arrondis simplement avec un API et pouvoir déplacer la form sans avo

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Ben

Master Chief
V
Ancien staff
Mar 3, 2011
4,069
3
944
Un peut partout.
Salut !

Voila tout simplement comment rendre une forme avec des coins arrondis grâce a un API :
Tout d'abords commencer a retirer la bordure
sizablle-64cb477697.png


Cliquez sur l'image pour la voir en grand.

Dans le code :
Code:
[COLOR=Blue]Public Class[/COLOR][COLOR=Teal] Form1[/COLOR]
[COLOR=Blue]Private Declare Function[/COLOR] SetWindowRgn [COLOR=Blue]Lib [/COLOR][COLOR=Red]"user32"[/COLOR] ([COLOR=Blue]ByVal[/COLOR] hWnd [COLOR=Blue]As Integer[/COLOR], ByVal hRgn [COLOR=Blue]As Integer[/COLOR], [COLOR=Blue]ByVal [/COLOR]bRedraw [COLOR=Blue]As[/COLOR] [COLOR=Blue]Integer[/COLOR]) [COLOR=Blue]As Integer[/COLOR]
    [COLOR=Blue]Private Declare Function [/COLOR]CreateRoundRectRgn [COLOR=Blue]Lib [/COLOR][COLOR=Red]"gdi32"[/COLOR] Alias [COLOR=Red]"CreateRoundRectRgn"[/COLOR] ([COLOR=Blue]ByVal [/COLOR]X1 [COLOR=Blue]As Integer[/COLOR], [COLOR=Blue]ByVal [/COLOR]Y1 [COLOR=Blue]As Integer[/COLOR], [COLOR=Blue]ByVal [/COLOR]X2 [COLOR=Blue]As Integer[/COLOR], [COLOR=Blue]ByVal [/COLOR]Y2 [COLOR=Blue]As Integer[/COLOR], [COLOR=Blue]ByVal [/COLOR]X3 [COLOR=Blue]As Integer[/COLOR], [COLOR=Blue]ByVal [/COLOR]Y3 [COLOR=Blue]As Integer[/COLOR]) [COLOR=Blue]As Integer[/COLOR]

[COLOR=Blue]Private Sub[/COLOR] Form1_Load(ByVal sender As System.[COLOR=Teal]Object[/COLOR], [COLOR=Blue]ByVal [/COLOR]e [COLOR=Blue]As [/COLOR]System.[COLOR=Teal]EventArgs[/COLOR]) [COLOR=Blue]Handles MyBase[/COLOR].Load
        SetWindowRgn([COLOR=Blue]Me[/COLOR].Handle, CreateRoundRectRgn(30, 30, [COLOR=Blue]Me[/COLOR].Width, [COLOR=Blue]Me[/COLOR].Height, 30, 30), [COLOR=Blue]True[/COLOR])
 [COLOR=Blue]   End Sub
End Class[/COLOR]
Ce que sa donne :
round-642b43c489.png

Cliquez sur l'image pour la voir en grand.
Petite paranthèse pour augmenter l'angle ou le réduire vous pouvez modifier comme vous voulez en modifiant
ce code (30).
Code:
[COLOR=Blue] ByVal [/COLOR]e [COLOR=Blue]As [/COLOR]System.[COLOR=Teal]EventArgs[/COLOR]) [COLOR=Blue]Handles MyBase[/COLOR].Load
        SetWindowRgn([COLOR=Blue]Me[/COLOR].Handle, CreateRoundRectRgn(30, 30, [COLOR=Blue]Me[/COLOR].Width, [COLOR=Blue]Me[/COLOR].Height, 30, 30), [COLOR=Blue]True[/COLOR])
Voila pour ce qui est de faire des coins arrondis.




Maintenant déplacer la form sans les bordures

Tout simplement en appelant le déplacement de form .
Code :
Code:
[COLOR=Blue]Private Sub[/COLOR] Form1_Load([COLOR=Blue]ByVal [/COLOR]sender [COLOR=Blue]As [/COLOR]System.[COLOR=Teal]Object[/COLOR], [COLOR=Blue]ByVal [/COLOR]e [COLOR=Blue]As [/COLOR]System.[COLOR=Teal]EventArgs[/COLOR]) [COLOR=Blue]Handles MyBase[/COLOR].Load
[COLOR=Blue]Me[/COLOR].Left = ([COLOR=Blue]My[/COLOR].Computer.Screen.Bounds.Width / 2) - ([COLOR=Blue]Me[/COLOR].Width / 2)
        Me.Top = ([COLOR=Blue]My[/COLOR].Computer.Screen.Bounds.Height / 2) - ([COLOR=Blue]Me[/COLOR].Height / 2)
        [COLOR=Teal]DeplacementDeForm[/COLOR].RendreMobile(Me)
    [COLOR=Blue]End Sub[/COLOR]
   
    [COLOR=Blue]Public Class[/COLOR] [COLOR=Teal]DeplacementDeForm[/COLOR]
       [COLOR=Blue] Public Shared Sub[/COLOR] RendreMobile(ByVal frm As Form)
            [COLOR=Blue]Dim c As New[/COLOR] [COLOR=Teal]DeplacementDeForm[/COLOR](frm, frm)
        [COLOR=Blue]End Sub[/COLOR]


       [COLOR=Blue] Public Shared Sub[/COLOR] RendreMobile([COLOR=Blue]ByVal [/COLOR]frm [COLOR=Blue]As [/COLOR]Form, [COLOR=Blue]ByVal [/COLOR]control [COLOR=Blue]As [/COLOR]Control)
            [COLOR=Blue]Dim c As New[/COLOR] [COLOR=Teal]DeplacementDeForm[/COLOR](frm, control)
     [COLOR=Blue]   End Sub[/COLOR]


[COLOR=Blue]#Region [/COLOR][COLOR=Red]"Variables privée"[/COLOR]
        [COLOR=Blue]Private[/COLOR] m_ClickPoint [COLOR=Blue]As [/COLOR][COLOR=Teal]Point[/COLOR]
        [COLOR=Blue]Private [/COLOR]m_Control [COLOR=Blue]As [/COLOR][COLOR=Teal]Control[/COLOR]
        [COLOR=Blue]Private [/COLOR]m_Frm [COLOR=Blue]As [/COLOR][COLOR=Teal]Form[/COLOR]
[COLOR=Blue]#End Region[/COLOR]


[COLOR=Blue]#Region[/COLOR] [COLOR=Red]"Création"[/COLOR]
        [COLOR=Blue]Public Sub New[/COLOR]([COLOR=Blue]ByVal [/COLOR]frm [COLOR=Blue]As [/COLOR][COLOR=Teal]Form[/COLOR], [COLOR=Blue]ByVal [/COLOR][COLOR=Teal]control [/COLOR][COLOR=Blue]As[/COLOR] Control)
            m_Frm = frm
            m_Control = control
            [COLOR=Blue]AddHandler [/COLOR]m_Control.MouseDown, [COLOR=Blue]AddressOf[/COLOR] _MouseDown
            [COLOR=Blue]AddHandler [/COLOR]m_Control.MouseMove, [COLOR=Blue]AddressOf[/COLOR] _MouseMove
       [COLOR=Blue] End Sub[/COLOR]
[COLOR=Blue]#End Region[/COLOR]


[COLOR=Blue]#Region[/COLOR] [COLOR=Red]"Methodes"[/COLOR]
        [COLOR=Blue]Sub [/COLOR]_MouseDown([COLOR=Blue]ByVal [/COLOR]sender [COLOR=Blue]As Object[/COLOR], [COLOR=Blue]ByVal [/COLOR]e [COLOR=Blue]As[/COLOR] [COLOR=Teal]MouseEventArgs[/COLOR])
            m_ClickPoint = New Point(e.X, e.Y)
        [COLOR=Blue]End Sub[/COLOR]


        [COLOR=Blue]Sub [/COLOR]_MouseMove([COLOR=Blue]ByVal [/COLOR]sender [COLOR=Blue]As Object[/COLOR], [COLOR=Blue]ByVal [/COLOR]e [COLOR=Blue]As[/COLOR] [COLOR=Teal]MouseEventArgs[/COLOR])
            [COLOR=Blue]If [/COLOR](e.Button = MouseButtons.Left) Then
                [COLOR=Blue]Dim [/COLOR]p [COLOR=Blue]As [/COLOR][COLOR=Teal]Point [/COLOR]= m_Frm.Location
                m_Frm.Location = [COLOR=Blue]New [/COLOR][COLOR=Teal]Point[/COLOR](p.X - m_ClickPoint.X + e.X, p.Y - m_ClickPoint.Y + e.Y)
         [COLOR=Blue]   End If
        End Sub
#End Region

[/COLOR] [COLOR=Blue]     End Class[/COLOR]
Voila après sa vous pourrez déplacé votre form comme vous voulez ;)

TuTo réaliser entièrement par mes soins.

Bon codage !
 

[M]assiwissa

75017KG
V.I.P
V
Jun 12, 2011
2,792
0
942
Merci , Tuto super bien expliqué rien a dire a part genial :hap: Et aussi ze t'aime x)
 

Ben

Master Chief
V
Ancien staff
Mar 3, 2011
4,069
3
944
Un peut partout.
De rien ;)
Et Ragnarock j'ai commencé un peut a regardé sa aussi mais la je suis plus sur les Aplication de form.