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

Windows Forms Discussion :

Comment faire un bouton difforme en C# ? [Débutant]


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Comment faire un bouton difforme en C# ?
    Bonjours à tous, après multiple recherche je me tourne vers vous pour savoir si il est possible de faire un bouton difforme, je m'explique je fais actuellement un petit jeu, et j'aurais besoin de faire un bouton ou une image comme ceci : (et cliquer a travers le transparent)


    Pour pouvoir ensuite l'utilisé ici :


    Pour l'affichage j'ai mis l'image de la ville en background et le contour du batiment en picturebox celle ci :

    l'avantage est que je n'ais pas besoin de recadré l'image au pixel prés elle est directement à la bonne position par contre je me trouve avec un gros problème c'est que n'importe ou, ou je clique sa sera sur ma picturebox ... donc je ne peux pas en mettre d'autres.

    Y a t'il un moyen de faire en sorte de cliqué à travers quand la partie de l'image est transparente ?

    Parce que sur mon exemple le bâtiment est plutôt carré donc si je prend l'image plus petite sa pourrais aller, mais si je prend une tours ou un bâtiment proche d'un autre .... sa risque de poser problème.

    J'ai trouvé ce poste chez vous : http://www.developpez.net/forums/d19...ir-images-png/
    J’espère que depuis 2006 les choses ont évoluer et que vous pourrez m'aider

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bon après un jour de recherche je me suis mis sur Flash
    Sa risque d’être un peu le "bordel" au niveau du code car j'ai utilisé "Shockwave Flash Object" (comme ici)

    En gros je met du flash dans ma winform à la place de mes images, et je découpes mes boutons difforme comme ça :
    http://helpx.adobe.com/fr/flash/kb/t...fessional.html

    Et pour transféré les infos de ActionScript à C# lorsque j’appuierais sur un bouton j'utiliserais ceci

    L'avantage du flash c'est que ce sera plus beau visuellement avec des petits effets sympathique, mais sa va alourdir le boulot.

    Si vous avez des options plus simple je suis preneur aussi

    Si un modo passe par là vous pouvez ajouter la balise [Résolu]

  3. #3
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut
    Je suis pas sûr d'avoir compris (il est tard en m'excusera ) mais si je comprends bien tu utilises une image 2 (avec le fond transparent) qui fait la taille exact de ton image 1 de base.
    Pourquoi ce choix ? Tu ne peux simplement pas utiliser une image 2 faisant seulement la taille de la partie bleue et positionner ensuite cette image 2 par dessus l'image 1 en définissant des positions X, Y par exemple ?
    C'est normal que tu cliques sur toute l'image 2.

    De plus ton image 2 même si 95% est transparent ça reste du traitement en plus à charger/réaliser/rendre/etc.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ta totalement raison, mais à la base j'ai fais sa pour tester, car je suis pas un expert en C# alors comme tous le monde je bidouille jusqu’à avoir ce que je souhaite et j'optimise ensuite

    Je cherchais un moyen de faire un bouton difforme et cliquer à travers sur les zone transparente, maintenant je le fais en flash ^^ je prend mon image je sélectionne la zone "transparente" et je l'efface directement donc j'ai exactement la bonne dimension et la bonne position, c'est ce que je souhaitais mais dans un autre langage donc je me suis ensuite débrouillé pour faire passé sa sur ma winform sur C# et ensuite pouvoir envoyé des donnés du flash vers mon C# c'est le gros bordel mais au moins je sais que c'est réalisable, y a plus qu'a coder

  5. #5
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut
    Mmmmh ok Ça m'a effectivement l'air d'être le gros bordèle !

    Apparemment tu as réussi ce que tu voulais en Flash (j'ai un peu de mal avec Flash... ). Si c'est le cas je t'invite à passer la conversation en résolu.
    Ça n'aurait pas été plus simple en c# pour après coup ?

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai pas eu le temps aujourd'hui de vraiment mi mettre mais j'ai déjà fais un bouton et pour le peu de code que sa ajoute c'est vraiment pas compliqué en fait, et je peu faire une interface digne de ce nom

    L'avantage du C# c'est que tu n'a pratiquement aucune limite au niveau du code et de ce que tu peut faire le problème par contre c'est les Winforms qui maintenant date de 98 c'est pas visuellement super attrayant

    Avec flash je peu faire des effets sympathique, pour le moment j'ai juste fais un changement de couleur sur le bouton de bleu en vert

    Mais sinon ta encore raison, mettre des boutons normaux en C# sa serais plus simple et sa prendrais moins de temps à mettre en oeuvre.

    Par contre au niveau du code sa change pas grand chose, j'ai juste fais des boutons sur flash qui envoie une petite variable string avec le nom du bâtiment, sur C# je réceptionne les donner et en fonction du texte je sais sur quel bouton j'ai cliqué, c'est comme un évent bouton_click en fait.

    Si sa interresse des gens pour le coter flash on ajoute ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Send_Batiment.addEventListener(MouseEvent.CLICK, send); //Send_Batiment c'est le nom du bouton utilisé
     
    function send(evt : Event):void
    {
    	ExternalInterface.call("sendText", "Batiment"); //Batiment et le texte que je désire envoyé à C#
    }
    En C# il faut ajouter dans la winform Flash :
    - Clic droit sur la boîte à outils, "Choisir les éléments"
    - Onglet "Composants COM"
    - Sélectionner "Shockwave Flash Object"

    Maintenant vous ajoutez l’événement "FlashCall" et vous entrez ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    using ShockwaveFlashObjects;
    using System.Xml;
    using AxShockwaveFlashObjects;
     
    private void player_FlashCall(object sender, _IShockwaveFlashEvents_FlashCallEvent e)
            {
                string Nom_Du_Bouton = "";
                // Création du fichier Xml pour recevoir notre message :
                XmlDocument document = new XmlDocument();
                document.LoadXml(e.request);
                XmlAttributeCollection attributes = document.FirstChild.Attributes;
                String command = attributes.Item(0).InnerText;
                XmlNodeList list = document.GetElementsByTagName("arguments");
                switch (command)
                {
                    case "sendText": Nom_Du_Bouton = list[0].InnerText; break;
                    case "Some_Other_Command": break;
                }
                if (Nom_Du_Bouton == "Batiment")
                {
                    //ici c'est comme un événement bouton_click
                }
            }
    J'ai fais au plus simple le "if" va se transformer en "switch" bientôt chez moi ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Débutant: Comment faire un bouton avec un mot de passe
    Par ch@rles.be dans le forum Sécurité
    Réponses: 1
    Dernier message: 06/02/2007, 19h37
  2. Comment faire un bouton pour envoyer un mail
    Par rafa55 dans le forum Access
    Réponses: 4
    Dernier message: 21/06/2006, 16h43
  3. [FLASH 8] Comment faire des boutons radio ?
    Par jbidou88 dans le forum Flash
    Réponses: 8
    Dernier message: 08/06/2006, 15h08
  4. Comment faire un bouton parcourir JSP Struts
    Par jehlg dans le forum Struts 1
    Réponses: 3
    Dernier message: 19/04/2006, 14h15
  5. Comment faire un bouton multi-choix ?
    Par richard038 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 03/10/2005, 21h58

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