Etienne BAUDOUX

Forum sur les projets de Etienne BAUDOUX


Arrondir les controls

Partagez
avatar
fandeonepiece2
Je suis là tous les jours
Je suis là tous les jours

Masculin Nombre de messages : 1804
Age : 16
Localisation : chez moi
Emploi/loisirs : Programmation H24
Humeur : massacrante... si je n'ai pas ma dose journalière de programmation
Date d'inscription : 14/09/2013

Arrondir les controls

Message par fandeonepiece2 le Dim 8 Mar 2015 - 8:14

Salut 
Ça faisait plus de 3 mois qu'il y avait pas eu de tuto, je me suis dit qu'il fallait y remédier Smile !
Voici un petit tuto plutôt simple, pour arrondir nos controls. Il vous suffit de coller ce code dans l'événement Paint dans un bloc "commande Visual Basic" :
Code:
' activation de plusieurs options pour améliorer le rendu
e.Graphics.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
e.Graphics.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias

Dim control As Control = sender ' on récupère le control dessiné

Dim Path As New System.Drawing.Drawing2D.GraphicsPath ' Création d'un graphic path qui va recevoir le cercle
Dim Rectangle As Rectangle = control.ClientRectangle ' Création d'un rectangle qui contient le dessin du control

Rectangle.Inflate(-10, -10) 'rognage des bords du rectangle
Path.AddEllipse(Rectangle) 'dessin du cercle
control.Region = New System.Drawing.Region(Path) ' application des modifications

Petite screen de l'éditeur de fonctions au cas où vous n'avez pas compris:

Il est possible de modifier la taille, en modifiant les valeurs, ligne 8.

le problème, c'est qu'il faut copier coller ce long code dans tout les controls qu'on veut arrondir. Pour éviter d'avoir à faire cela, on va créer une fonction, qu'on appellera en une ligne Smile.

Cliquez sur le bouton créer une fonction :


paramétrez la comme ceci :

Validez avec Ok.

On vas ajouter dedans une commande Visual Basic avec ce code dedans :
Code:
Dim graph As Graphics = control.CreateGraphics
'activation de plusieurs options pour améliorer le rendu
graph.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
graph.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
graph.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
Dim Path As New System.Drawing.Drawing2D.GraphicsPath 'Création d'un graphic path qui va recevoir le cercle
Dim Rectangle As Rectangle = control.ClientRectangle 'Création d'un rectangle qui contient le dessin du control

Rectangle.Inflate(-ValW, -ValH) 'rognage des bords du rectangle
Path.AddEllipse(Rectangle) 'dessin du cercle
control.Region = New System.Drawing.Region(Path) 'application des modifications

ce qui donne :

On va maintenant faire appel à notre fonction sur un control, pour l'arrondir. On va donc se mettre en dehors de notre fonction arrondir. Je vais me mettre dans la fonction Form_Load. 

On ajoute un bloc "Exécuter une fonction d'un projet". On choisi la fonction Arrondir donc. Dans la le champs pour control, on met le nom du control qu'on veut arrondir. Dans ValH on met la hauteur qu'on veut enlever, et dans ValW, on écrit la largeur qu'on veut enlever. Cela donne pour moi au final :

on valide avec Ok. Tester votre programme Smile. Votre control sera devenu rond !!!!

vous n'avez maintenant plus qu'a mettre un bloc "Exécuter une fonction d'un projet" similaire à chaque fois que vous voulez arrondir un control Smile

Bon dev  !


Dernière édition par fandeonepiece2 le Dim 8 Mar 2015 - 10:26, édité 1 fois



(ಠ_ಠ)


http://openclassrooms.com/forum/sujet/regie-publicitaire-drozor
avatar
lereparateurdepc


Masculin Nombre de messages : 5503
Age : 24
Localisation : Calvados
Emploi/loisirs : Electrotechnicien / électricité, HAUTE TENSION, électronique, informatique, automatisme , Arduino, bref le BRICOLAGE , ...
Humeur : toujours cool
Date d'inscription : 31/01/2010

Re: Arrondir les controls

Message par lereparateurdepc le Dim 8 Mar 2015 - 9:34

re,

Superbe trouvaille mais en effet, il n'est pas possible de passer par autre chose que du VB MAIS :

Comme il n'y a que 2 valeurs utilisables on peut en faire une fonction avec 2 paramètres.
Sous Sz 2014, on peut facilement faire une fonction et l'utiliser.
Il faut simplement adapter le code VB ci-dessus pour l'utiliser avec la fonction.

Je regarde ça mais si tu veux tester n'hésite pas Smile

EDIT :
Voici la fonction :
Code:

    Sub CoinStyler(ByVal ValWidth As Integer, ByVal ValHeigth As Integer, ByVal eDest As System.Windows.Forms.PaintEventArgs, ByVal senderDest As System.Object)
        ' activation de plusieurs options pour améliorer le rendu
        eDest.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
        eDest.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
        eDest.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias

        Dim control As Control = senderDest ' on récupère le control dessiné

        Dim Path As New System.Drawing.Drawing2D.GraphicsPath ' Création d'un graphic path qui va recevoir le cercle
        Dim Rectangle As Rectangle = control.ClientRectangle ' Création d'un rectangle qui contient le dessin du control

        Rectangle.Inflate(-(ValWidth), -(ValHeigth)) 'rognage des bords du rectangle
        Path.AddEllipse(Rectangle) 'dessin du cercle
        control.Region = New System.Drawing.Region(Path) ' application des modifications
    End Sub

et son utilisation DANS l'évènement PAINT UNIQUEMENT :
Code:
CoinStyler(Val1, Val2, e, sender)
avec Val1 et Val2 des nombres entier POSITIFS car le signe - étant obligatoire pour un arrondis bah je l'ai mis dans la fonction.
Comme il faut les 2 paramètres "e" et "sender", j'ai ajouté 2 paramètres supplémentaire dans la fonction.

Avec cette modif, il est maintenant rapide d'utiliser cette fonction sous SZ 2014 en utilisant le code VB dans la fonction;
comme ça, l'utilisateur ne manipule pas à chaque fois le code VB.

Cordialement,
Le réparateur de PC



Modérateur & Administrateur du forum
Merci de contacter les membres par MP ou mail que pour "urgences". Le forum est fait pour ça. Merci

@ Contact : franleboss@gmail.com  Smile
Arrow  Visitez mon site : désolé l'hébergeur à fermé Sad

Ma chaine tutube : https://www.youtube.com/channel/UC7iU59NNAHz-tW5wqcgONHA


avatar
fandeonepiece2
Je suis là tous les jours
Je suis là tous les jours

Masculin Nombre de messages : 1804
Age : 16
Localisation : chez moi
Emploi/loisirs : Programmation H24
Humeur : massacrante... si je n'ai pas ma dose journalière de programmation
Date d'inscription : 14/09/2013

Re: Arrondir les controls

Message par fandeonepiece2 le Dim 8 Mar 2015 - 10:04

re,
il est possible de n'utiliser qu'un paramètre en modifiant un peu le code Wink
Code avec qu'un seul paramètre utilisé:

Code:
 Dim control As Control = sender 'on réccupère le control dessiné
        Dim graph As Graphics = control.CreateGraphics
        'activation de plusieurs options pour améliorer le rendu
        graph.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
        graph.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
        graph.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        Dim Path As New System.Drawing.Drawing2D.GraphicsPath 'Création d'un graphic path qui va recevoir le cercle
        Dim Rectangle As Rectangle = control.ClientRectangle 'Création d'un rectangle qui contient le dessin du control

        Rectangle.Inflate(-10, -10) 'rognage des bords du rectangle
        Path.AddEllipse(Rectangle) 'dessin du cercle
        control.Region = New System.Drawing.Region(Path) 'application des modifications


en effet, on peut faire une fonction, j'édit mon premier post avec la deuxième méthode Smile
cordialement



(ಠ_ಠ)


http://openclassrooms.com/forum/sujet/regie-publicitaire-drozor
avatar
lereparateurdepc


Masculin Nombre de messages : 5503
Age : 24
Localisation : Calvados
Emploi/loisirs : Electrotechnicien / électricité, HAUTE TENSION, électronique, informatique, automatisme , Arduino, bref le BRICOLAGE , ...
Humeur : toujours cool
Date d'inscription : 31/01/2010

Re: Arrondir les controls

Message par lereparateurdepc le Dim 8 Mar 2015 - 10:11

re,

J'ai édité mon poste Smile
Mais il faut au moins 3 paramètres dans ma fonction..... Smile

Cordialement,
Le réparateur de PC



Modérateur & Administrateur du forum
Merci de contacter les membres par MP ou mail que pour "urgences". Le forum est fait pour ça. Merci

@ Contact : franleboss@gmail.com  Smile
Arrow  Visitez mon site : désolé l'hébergeur à fermé Sad

Ma chaine tutube : https://www.youtube.com/channel/UC7iU59NNAHz-tW5wqcgONHA


avatar
fandeonepiece2
Je suis là tous les jours
Je suis là tous les jours

Masculin Nombre de messages : 1804
Age : 16
Localisation : chez moi
Emploi/loisirs : Programmation H24
Humeur : massacrante... si je n'ai pas ma dose journalière de programmation
Date d'inscription : 14/09/2013

Re: Arrondir les controls

Message par fandeonepiece2 le Dim 8 Mar 2015 - 10:28

re,
Ouais j'ai vu après avoir posté, j'ai adapté le code dans le premier post Wink. J'ai rajouté quelques images aussi Smile.
cordialement



(ಠ_ಠ)


http://openclassrooms.com/forum/sujet/regie-publicitaire-drozor
avatar
lereparateurdepc


Masculin Nombre de messages : 5503
Age : 24
Localisation : Calvados
Emploi/loisirs : Electrotechnicien / électricité, HAUTE TENSION, électronique, informatique, automatisme , Arduino, bref le BRICOLAGE , ...
Humeur : toujours cool
Date d'inscription : 31/01/2010

Re: Arrondir les controls

Message par lereparateurdepc le Dim 8 Mar 2015 - 10:34

re,

Nickel mais il y a un petit truc qui me choque :
Le premier paramètre de ta fonction est appelé "Control" !!!!
Tu risque d'avoir des soucis avec la classe "Control".
c'est pour ça que , dans ma fonction, j'ai utilisé "eDest" et "senderDest";
"Dest" pour "Destination" on dissocie bien le vrai "e" et "sender" du contrôle de
son utilisation dans la fonction.

Cordialement,
Le réparateur de PC



Modérateur & Administrateur du forum
Merci de contacter les membres par MP ou mail que pour "urgences". Le forum est fait pour ça. Merci

@ Contact : franleboss@gmail.com  Smile
Arrow  Visitez mon site : désolé l'hébergeur à fermé Sad

Ma chaine tutube : https://www.youtube.com/channel/UC7iU59NNAHz-tW5wqcgONHA


avatar
fandeonepiece2
Je suis là tous les jours
Je suis là tous les jours

Masculin Nombre de messages : 1804
Age : 16
Localisation : chez moi
Emploi/loisirs : Programmation H24
Humeur : massacrante... si je n'ai pas ma dose journalière de programmation
Date d'inscription : 14/09/2013

Re: Arrondir les controls

Message par fandeonepiece2 le Dim 8 Mar 2015 - 10:44

re,
non, ça vérifie les variables, ensuite les paramètres (qui sont des variables locales au passages^^), et si il a pas trouvé, ça vérifie dans les class Wink
cordialement



(ಠ_ಠ)


http://openclassrooms.com/forum/sujet/regie-publicitaire-drozor
avatar
lereparateurdepc


Masculin Nombre de messages : 5503
Age : 24
Localisation : Calvados
Emploi/loisirs : Electrotechnicien / électricité, HAUTE TENSION, électronique, informatique, automatisme , Arduino, bref le BRICOLAGE , ...
Humeur : toujours cool
Date d'inscription : 31/01/2010

Re: Arrondir les controls

Message par lereparateurdepc le Dim 8 Mar 2015 - 10:59

re,

OK

Cordialement,
Le réparateur de PC



Modérateur & Administrateur du forum
Merci de contacter les membres par MP ou mail que pour "urgences". Le forum est fait pour ça. Merci

@ Contact : franleboss@gmail.com  Smile
Arrow  Visitez mon site : désolé l'hébergeur à fermé Sad

Ma chaine tutube : https://www.youtube.com/channel/UC7iU59NNAHz-tW5wqcgONHA


avatar
Blackorion35
Je suis là tous les jours
Je suis là tous les jours

Masculin Nombre de messages : 2557
Age : 26
Localisation : Rouen
Emploi/loisirs : Dirigeant société informatique déclaré/Informaticien au CNED
Humeur : En forme !
Date d'inscription : 19/03/2013

Re: Arrondir les controls

Message par Blackorion35 le Dim 8 Mar 2015 - 20:29

Hello Very Happy 

Excellente idée de tutoriel merci Fandeonepiece2  cheers



Le site officiel de notre société : http://algostep-company.fr
Notre WebOS "Rynna" en développement : http://rynnawebos.fr/login
Le WebOS "Zator" conçu pour le forum et ses membres dispo en test ici :
http://algostep-company.fr/WebOS-Zator-Test1/
---------------------------------------------------------

Contenu sponsorisé

Re: Arrondir les controls

Message par Contenu sponsorisé


    La date/heure actuelle est Dim 20 Aoû 2017 - 7:51