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

C# Discussion :

[Novice] Graphics et Bitmap


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut [Novice] Graphics et Bitmap
    Bonjour à tous,

    je sais copier un Bitmap dans un Graphics en utilisant Graphics.DrawImage(), mais comment obtenir un Bitmap représentant le contenu d'un Graphics ?

    J'ai tenté le code suivant, mais sans succés (l'image est complètement noire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    g = pictureBox1.CreateGraphics();
    g.DrawLine(new Pen(Color.Red), new Point(0, 0), new Point(pictureBox1.Width - 1, pictureBox1.Height - 1));
     
    saveBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    pictureBox1.DrawToBitmap(saveBitmap, pictureBox1.Bounds);
     
    saveBitmap.Save(@"c:\test.png");
    Plus généralement, j'ai un peu de mal à cerner le lien entre ces 2 classes.
    Est-ce que qq'un aurait un lien présentant leurs interactions ?

    Merci à tous,
    Lucas

    Bitmap: http://msdn.microsoft.com/fr-fr/library/4e7y164x.aspx
    Graphics: http://msdn.microsoft.com/fr-fr/libr....graphics.aspx

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Pour bien comprendre les chose il faut déja bin capter certaines notion (j'ai aussi ramé la dessus au début)

    je sais copier un Bitmap dans un Graphics en utilisant Graphics.DrawImage(),
    En fait tu ne copie JAMAIS une image dans un Graphics le graphics est une classe outil te permettant de manipuler des elements graphiques et de dessiner sur une surface préalablement définie

    Quand tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g = pictureBox1.CreateGraphics();
    Tu ne fais qu'associer un Graphics a la surface de fond de ton PictureBox et cela te permettra de dessiner dessus

    Pour ce qui est de ton image toute noire je pense que c'est simplement que par défaut ton fond d'image est transparent et que quand tu sauve ce que tu as dessiné est perdu dans ce fond

    Je te conseillerais de peindre d'abord un fond sur ton image et ensuite ton dessin

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    Merci Olibara pour ta réponse.
    Je me doutais pour le createGraphics.
    Est-ce que je me trompre si je dis qu'on n'a jamais accés directement à La référence Graphics d'un composant tout comme on pouvait le faire avec un Canvas de Win32 ?

    Bref, cela ne m'avance pas

    Concernant l'image noire, je ne pense pas qu'elle soit due à la transparence.
    Je vais faire quelques tests pour confirmer mes dires, mais si je dessine sur une instance de Graphic qui n'est pas directement liée à mon pictureBox, je ne vois pas comment le pictureBox pourrait se dessiner dans un Bitmap, sachant que, en fait, je n'ai rien vraiment dessiner dans le pictureBox.

    Je me demande si je ne devrais pas réassigner le graphics (obtenu via CreateGraphics()) au pictureBox avant de faire un DrawToBitmap().

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Que veux tu faire exactement ?
    Et a quoi doit servir ton PictureBox ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    Je souhaite développer sous C# le même type de composant que j'ai déjà réaliser sous Delphi.

    J'ai choisi d'utiliser un pictureBox pour dessiner de manière simple des lignes , des arcs etc... Je ne sais pas si c'est le meilleur composant pour faire cela mais je n'en ai pas trouver d'autres. J'aurai aimé disposer de l'équivalent à un TShape de CodeGear.
    Je ne suis pas figé sur le pictureBox, je peux aussi utiliser tous les composants disposant d'un Graphics (comme un Panel par exemple).

    Dans ce composant j'ai besoin de prendre une "photo" mémoire (MemorySteam) représentant le sous forme de Bitmap l'enemble de mes segments et arcs.

    D'où mon post .

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Si je comprends bien, l'intention est de creer une image et accesoirement la visualiser qq part

    Dans ce cas l'element principal est ton image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // tu cree l'image
    Image MonImage=new Bitmap(Width,Height);
    // Ensuite tu lui attribue un Graphics
    Graphics g=Graphics.FromImage(MonImage);
    // La tu peux dessiner sur ton image
    g.Draw....
    // Eventuellement l'afficher
    MaPictureBox.Image=MonImage;
    // Et la sauver
    MonImage.Save(***);

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

Discussions similaires

  1. [Débutant] Aide sur les graphics associés à bitmap
    Par chekito07 dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/01/2014, 09h36
  2. [Débutant] Graphic et Bitmap
    Par horemheb dans le forum VB.NET
    Réponses: 4
    Dernier message: 04/07/2013, 00h06
  3. Graphics et Bitmap
    Par CARNIBAL dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 24/03/2009, 13h19
  4. [C#] Obtenir bitmap à partir de Graphics
    Par Hurin dans le forum C#
    Réponses: 9
    Dernier message: 18/09/2008, 18h20
  5. [C#] objet graphics dans une bitmap
    Par lancer83 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/08/2006, 14h30

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