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

VC++ .NET Discussion :

Dessiner sur une pictureBox transparente


Sujet :

VC++ .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Par défaut Dessiner sur une pictureBox transparente
    bonjour,
    je travaille avec visual C++ 2010 express pour un appli cartographique.
    Je dessine sans pb sur un panel (lignes, rectangles, cercles...).
    Maintenant, je fais un peu plus compliqué:
    le panel porte une image en background et une pictureBox que je rend transparente (comme si c'était une plaque de verre) et je tente de dessiner dessus.
    Le code dans le constructeur de ma Form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    panel1->BackgroundImage = Image::FromFile("images/Abondance_small.jpg");
    pictureBox1->BackColor = System::Drawing::Color::Transparent;
    SetStyle(ControlStyles::SupportsTransparentBackColor, true);
    Rien ne se passe, aucun tracé n'est réalisé.

    Peut-on dessiner sur une paintBox transparente?
    Le code est-il correct ou y a t'il un défaut dans le raisonnement?

    Merci pour vos suggestions.

  2. #2
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Par défaut dessin sur paintBox transparente bis
    Bonjour,
    en parlant aux autres, on réalise où l'on écrit de travers.
    Donc j'arrive à nouveau à tracer mes segments mais je bousille complètement la carte qui est sur le panel.
    C'est comme si la pictureBox ne jouait pas sont rôle de panneau de verre en me laissant dessiner sur le panel...

    Faut-il que je trace mes segments et rafraîchisse systématiquement la carte qui est en dessous? Ou y a t-il une autre technique?

    Merci.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    Si vous êtes en début de projet, n'utilisez plus WinForms mais WPF car les effets de transparence semblent bien mieux gérés.

  4. #4
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Par défaut
    bonsoir,
    ce n'est pas un projet au sens industriel du terme mais pour des étudiants en cycle informatique.
    Je cherche à leur faire appréhender le C++ à travers un EDI actuel. Visual C++ c'est déjà du c++ avec du CLI en plus. J'aimerais en rester là afin de ne pas trop charger l'apprentissage.

    Pour ce qui est de la phase faisabilité du projet que je mène, j'en suis à dessiner des segments sur la pictureBox par dessus la carte portée par le panel. Pour l'instant, je recharge la carte entre chaque dessin du segment. Le rendu n'est pas terrible bien sûr.

    Ce que je cherche à faire est il réalisable avec un résultat acceptable ?

    Merci.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    Désolé pour le délai de réponse.

    La transparence peut être problématique avec WinForms, mais un prenant un peu de recul, je ne vois pas pourquoi vous avez besoin de cette pictureBox.
    le panel porte une image en background et une pictureBox que je rend transparente (comme si c'était une plaque de verre) et je tente de dessiner dessus
    Comme l'image est en background, les affichages du panel se feront sur le background, donc sans l'utilisation d'une pictureBox transparente.

    Pouvez-vous poster une solution VS2010 avec un projet minimaliste pour reproduire le problème ?

  6. #6
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Par défaut
    bonjour,
    je ne suis pas aux pièces!!

    Mon souci vient du fait que je voulais dessiner un segment de manière continue tout en déplaçant la souris (comme dans Paint). Donc j'efface le segment "précédent" en prenant la couleur du fond puis je dessine le segment "courant" avec la couleur choisie. Tant qu'il n'y a pas d'image en background, c'est satisfaisant. Avec une image, celle-ci est affectée par l'opération d'effacement du segment. D'où mon idée d'utiliser une pictureBox transparente par dessus le panel et dessiner sur cette pictureBox. Mais le résultat reste le même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(e->Button == System::Windows::Forms::MouseButtons::Left)
    {
    s->effacer(panel1);	//effacer "l'ancien" segment
    				pExt.X = e->X;
    				pExt.Y = e->Y;
    				s->setExtremite(pExt);
    				s->dessiner(panel1);	//dessiner le segment courant
    				//redessiner les segments qui ont pu être effacés
    				for(int i=0; i<conteneur->Count; i++)
    					conteneur[i]->dessiner(panel1);
    			}

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

Discussions similaires

  1. Drag and drop sur une PictureBox
    Par abdiouldbody dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/06/2009, 15h55
  2. Dessiner sur une image
    Par alex6891 dans le forum Java ME
    Réponses: 1
    Dernier message: 16/04/2006, 02h45
  3. [Debutant] Un thread qui dessine sur une fenetre ???
    Par Spartan03 dans le forum OpenGL
    Réponses: 6
    Dernier message: 05/04/2006, 20h19
  4. Déplacer, zoomer, dessiner (sur) une image
    Par charlito dans le forum 2D
    Réponses: 4
    Dernier message: 22/02/2006, 01h58
  5. [Servlet] [Image] Dessiner sur une image
    Par gaia_dev dans le forum 2D
    Réponses: 5
    Dernier message: 01/09/2004, 17h11

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