Etienne BAUDOUX

Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Etienne BAUDOUX

Forum sur les projets de Etienne BAUDOUX

Le deal à ne pas rater :
Pokémon EV08 Étincelles Déferlantes : où acheter le coffret ...
Voir le deal

3 participants

    Arrondir les controls

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


    Masculin Nombre de messages : 1804
    Age : 23
    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 Empty Arrondir les controls

    Message par fandeonepiece2 Dim 8 Mar 2015 - 8:14

    Salut Arrondir les controls Icon_smile
    Ç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 :
    Arrondir les controls Btnfon10

    paramétrez la comme ceci :
    Arrondir les controls Config10
    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 :
    Arrondir les controls Img_co10
    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 :
    Arrondir les controls Execfu10
    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 Arrondir les controls Icon_biggrin !


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



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

    Arrondir les controls Empty Re: Arrondir les controls

    Message par lereparateurdepc 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
    fandeonepiece2
    fandeonepiece2
    Je suis là tous les jours
    Je suis là tous les jours


    Masculin Nombre de messages : 1804
    Age : 23
    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 Empty Re: Arrondir les controls

    Message par fandeonepiece2 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é:

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



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

    Arrondir les controls Empty Re: Arrondir les controls

    Message par lereparateurdepc 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
    fandeonepiece2
    fandeonepiece2
    Je suis là tous les jours
    Je suis là tous les jours


    Masculin Nombre de messages : 1804
    Age : 23
    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 Empty Re: Arrondir les controls

    Message par fandeonepiece2 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
    lereparateurdepc
    lereparateurdepc



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

    Arrondir les controls Empty Re: Arrondir les controls

    Message par lereparateurdepc 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
    fandeonepiece2
    fandeonepiece2
    Je suis là tous les jours
    Je suis là tous les jours


    Masculin Nombre de messages : 1804
    Age : 23
    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 Empty Re: Arrondir les controls

    Message par fandeonepiece2 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
    lereparateurdepc
    lereparateurdepc



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

    Arrondir les controls Empty Re: Arrondir les controls

    Message par lereparateurdepc Dim 8 Mar 2015 - 10:59

    re,

    OK

    Cordialement,
    Le réparateur de PC
    Blackorion35
    Blackorion35
    Je suis là tous les jours
    Je suis là tous les jours


    Masculin Nombre de messages : 2612
    Age : 33
    Localisation : Rouen
    Emploi/loisirs : Technicien Informatique DEC / Associé Directeur Convergence
    Humeur : C'est quand les prochaines vacs... ?
    Date d'inscription : 19/03/2013

    Arrondir les controls Empty Re: Arrondir les controls

    Message par Blackorion35 Dim 8 Mar 2015 - 20:29

    Hello Very Happy 

    Excellente idée de tutoriel merci Fandeonepiece2  cheers

    Contenu sponsorisé


    Arrondir les controls Empty Re: Arrondir les controls

    Message par Contenu sponsorisé


      La date/heure actuelle est Dim 8 Sep 2024 - 1:13