IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Insérer bouton bascule à deux images


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2015
    Messages : 14
    Par défaut Insérer bouton bascule à deux images
    Bonjour à tous !

    Premièrement je tiens à m'excuser si une question similaire a déjà été postée, mais je n'ai jamais vu un forum aussi complet en "sous-forum" et ça m'a légèrement découragé lorsque j'ai essayer de cibler mes recherches

    Définition :

    Je maîtrise assez peu la programmation de logiciels, cependant j'ai pendant longtemps réaliser des fonctionnalités en VBA sous Excel et d'autres logiciels de la suite Microsoft a titre personnel. Dans ces fonctionnalités, il m'est arrivé d'utilisé des boutons bascules à deux états nommés " ToggleButton".

    Aujourd'hui, j'aimerais réaliser un logiciel dans le cadre du développement d'un système domotique personnel, j'ai donc téléchargé Visual Basic 2015, et commencé la programmation d'une "esquisse" d'un programme, mais avant tout pour me faire la main avant d'attaquer le gros du poisson.

    Problème :

    J'aimerais dans le logiciel que j'ai commencé à développer, utiliser les mêmes boutons (BISTABLE, à bascule).

    Mais attention, j'ai une requête : J'aimerais également que ce bouton ait l'apparence d'une image que j'ai réalisée, en l'état non enfoncé, et qu'il ait l'apparence d'une seconde image, en l'état enfoncé.

    En fait pour faire simple, mon but est de réaliser un bouton " slide button " (Genre activer un réveil avec un iPhone). Cependant j'imagine que ça doit être une usine à gaz de réaliser un VRAI slide-button avec la fonction de "glissement" du bouton, personnellement, et dans un premier temps surtout, j'aimerais uniquement avoir l'apparence de ces boutons, avec le fonctionnement d'un simple bouton à bascule.

    Mes démarches préalables :

    J'ai bien entendu fait plusieurs recherches sur internet, mais je n'ai pas vraiment trouvé quelque chose de détaillé dans le langage de programmation que je m'apprête à utiliser, et surtout qui ne prenait pas en compte une seconde image lorsque l'état change. J'ai réussi également à modifier les paramètres de boutons genre RadioButton ou CheckBox, mais je n'ai jamais réussi à changer l'image lorsque le bouton était enfoncé, seulement celle de l'apparence avant qu'il soit enfoncé.




    Mesdames, messieurs,

    Quelqu'un d'entre-vous serait-il en mesure de m'aider dans cette noble tâche ? Qui, je l'imagine, peut éventuellement paraître simple vous certains d'entre vous ?!

    Merci d'avance pour toute l'aide que vous saurez m'apporter, à bientôt,

    Johnmaryn

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 200
    Par défaut
    il est possible de modifier l'apparence des controles
    chaque controle est codé en .net, donc il est possible d'en hériter, et de modifier le dessin qui est fait

    le mieux étant alors d'hériter de checkbox qui sert déjà à gérer un état 0 / 1
    et pour le dessin tu dessineras alors l'image selon l'état

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class MonToggleBouton
      inherits Checkbox
     
      private overrides sub Onpaint(pevent as system.windows.forms.painteventargs)
        if me.checked then
              pevent.Graphics.Drawimage(imagechecked, 1,1)
          else
              pevent.Graphics.Drawimage(imagePASchecked, 1,1)
        end if
      end sub 
     
    end clas
    voilà dans le principe, après dans la boite à outils (après compilation) tu auras ce nouveau controle que tu pourras poser sur les forms
    le drawimage a d'autres surcharges (méthode du même noms mais avec des paramètres différents) permettant de faire au passage un redimensionnement de l'image, pour s'adapter à la taille du controle par exemple

    quand checked change, le code de base de checkbox fait qu'il demande le redessin du controle, donc cette sub sera rappelée automatiquement pour mettre à jour l'interface


    il est aussi possible de faire une animation du "togglage", avec un peu plus de code

    et si tu veux faire un controle pour un slide c'est à peine plus compliqué
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2015
    Messages : 14
    Par défaut
    Bonjour POL63,

    Si je comprends bien, créer une "class" publique revient à créer soi-même un objet.
    Après compilation de l'objet, ce dernier est ajouté à la liste d'outils.

    Je ne connaissais pas non plus la fonction d'héritage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if me.checked then
              pevent.Graphics.Drawimage(imagechecked, 1,1)
          else
              pevent.Graphics.Drawimage(imagePASchecked, 1,1)
        end if
    A quoi retourne l'instruction " pevent.Graphics.Drawimage(imagechecked, 1,1) " ?
    J'ai déjà des images dessinées, que je peux exporter dans n'importe quel format, n'est-il pas possible d'aller chercher ces images dans les ressources images du projet ?
    C'est cette démarche que j'ai utilisé pour modifier l'image des boutons précédemment.



    et si tu veux faire un controle pour un slide c'est à peine plus compliqué
    Si vous m'accompagnez dans cette démarche, c'est avec plaisir, mais j'aimerais déjà réaliser ce premier bouton à deux état, histoire d'y aller pas à pas et de bien comprendre les structures


    L'idée au final, c'est d'avoir une interface avec un TabControl, premier onglet : Accès aux pièces, second onglet : Accès à toutes les lumières.

    En fait on pourrait allumer la lumière de la cuisine (par exemple) soit depuis la page cuisine (qui contient tout ce qui est possible de commander dans la cuisine) de l'onglet 1 soit directement depuis l'onglet 2 qui contient le bouton de chaque lumière de la maison Avec en plus deux boutons pour allumer toute la maison ou éteinte toute la maison.

    (histoire de te donner une idée de ce que je souhaite faire)

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 200
    Par défaut
    développer dans un langage sans en connaitre une partie assez conséquente fait qu'on passe à côté de beaucoup de choses
    tout le monde débute, donc tout le monde est passé par là

    vb.net est un langage orienté objet, ce qui veut dire qu'il y a des classes, qui génèrent des instances, qu'on peut faire de l'héritage, du polymorphisme etc...

    quand une classe hérite d'une autre, elle a tout le code de la classe de base, plus le code qu'on lui rajoute, on qu'on lui substitue
    ici le mot clé overrides signifie que le code d'origine n'est plus, qu'il est remplacé par ce code là

    en overridant la méthode onpaint, on peut alors dessiner tout autre chose que ce que fait le checkbox à l'origine
    car chaque controle se dessine sur la fenetre avec des instructions .net de base (drawstring, drawline, drawimage ...)

    créer une classe de type control dans un projet fait que le controle est ajouté à la boite à outils
    ici en héritant de checkbox la classe est de type control, donc ajouté à la boite à outils
    (on peut aussi créer un control totalement nouveau sans hériter de checkbox button ou autre)


    l'instruction pevent.Graphics.Drawimage sert à dessiner l'image à l'écran sur le controle
    quand on met une image dans la propriété image de button, celle ci est au final dessinée par la même instruction (car button fait drawimage si on lui donné une image)
    après libre à toi de mettre l'image en ressource du projet (c'est pratique en effet) et dans ce cas tu dois écrire my.resources.monimage sur cette ligne de dessin
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2015
    Messages : 14
    Par défaut
    Bien, j'ai, je pense, compris tout ce dont tu m'a fait part.


    J'ai également commencé les démarches :

    J'ai créé une classe, j'ai ai copié ton morceau de code, et fait la compilation.

    J'ai pris soin de modifier le chemin d'accès des images en question, en passant par les ressources.


    question : Est-ce une faute de frappe ou il est bien question de pevent.Graphics et non prevent.Graphics ?


    Enfin, lorsque je compile, cette erreur apparaît :


    BC30266 'Private Overrides Sub Onpaint(Prevent As PaintEventArgs)' ne peut pas se substituer à 'Protected Overrides Sub OnPaint(pevent As PaintEventArgs)', car elles ont des niveaux d'accès différents.

    Enfin, pour parfaitement comprendre la structure de ce petit bout de code, à quoi correspondent les deux 1 à la fin des pevent.Graphics ?
    Est-ce la taille ? 1 pour 1 = Taille d'origine ?

    Merci encore !

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    il s'agit bien de pevent et non prevent car c'est le nom de l'argument de ta fonction. Tu pourrais nommer ton argument choucroute mais ça aurait moins de sens (pevent pour PaintEvent, et puis c'est le nom de l'argument dans la fonction de la classe de base).

    Pour ton deuxième souci ça vient du fait que tu tentes d'overrider une fonction "protected" (accessible par la classe et ses classes dérivées) avec une fonction "private" (uniquement accessible par la classe elle-même).

    Pour ta dernière question il suffit d'aller voir la définition de la méthode sur la MSDN (site que je te conseille si tu poursuis l'aventure en .NET, tu y trouveras tout un tas d'info, de remarques et d'exemples). Il s'agit des coordonnées de l'angle supérieur gauche de l'image dessinée.

    Bon dev.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/08/2015, 22h54
  2. Réponses: 1
    Dernier message: 14/09/2012, 19h20
  3. mettre une image sur un bouton bascule
    Par radahm dans le forum IHM
    Réponses: 3
    Dernier message: 12/03/2009, 13h37
  4. Réponses: 2
    Dernier message: 30/04/2007, 10h22
  5. Bouton bascule + images
    Par Marco_SAP dans le forum IHM
    Réponses: 2
    Dernier message: 21/02/2007, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo