Control dans apercu avant impression

Résolu
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010 - 14 nov. 2006 à 04:24
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 14 nov. 2006 à 16:16
Bonjour, je souhaiterais imprimer / mettre dans l'apercu un control ou au moin sa valeur.
J'ai trouvé ceci pour c#.net : http://www.codyx.org/snippet_capture-image-form-tous-controles_147.aspx
Mais sa ne fonctionne pas :/
Voila mon code :

 private void pd_PrintPage(object sender, PrintPageEventArgs e)
            {        
                e.Graphics.DrawString("coucou, voili un ptit test", new Font(FontFamily.GenericSansSerif, 4), new            SolidBrush(Color.Black), 25, 45);

                Bitmap lbl = new Bitmap(Label1.Size.Width, base.Size.Height);
                Label1.DrawToBitmap(lbl, new System.Drawing.Rectangle(0, 0, Label1.Size.Width, Label1.Size.Height));
            }
 Le "coucou voili un ptit test" s'affiche bien mais pas le label.
Si quelqu'un pouvias m'eclairer la dessus.
Merci.

10 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
14 nov. 2006 à 14:42
pour transformer ton bitmap en image :
Image Img = Image.FromHBitmap(lbl.GetHBitmap());

ensuite, tu n'as pas tout a fait l'air de comprendre ce que tu écris (c'est pas méchant hein ^^)
donc :
ecrire
Bitmap lbl = blablalba
ne signifie pas que tu crée une image. tu ne fait qu'instancier un objet de type bitmap. en bref, cest un objet qui est en mémoire qui peut contenir une bitmap.
ensuite, drawimage...
tu dessine dans le contexte graphique cible (le rectangle que tu as défini) l'image source (ton bitmap qui doit en fait etre une image).
ensuite, le bitmap que tu as créé est vide. il a une taille mais pas d'image a l'intérieur (cest ce que tu as écrit clairement).
A priori, tu devrais plutot récupérer le hDC ou hWnd du controle a dessiner, et recopier la zone du graphics du controle dans le graphics d'impression (je sais pas si cest clair). A vue de nez ca me semble peut etre le plus simple (ton controle a une propriété handle qui correspond au hWnd).
3
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
14 nov. 2006 à 15:34
Bon et bien j'ai utilisé ce code :http://www.csharpfr.com/infomsg_IMPRIMER-TOUT-CONTENU-FENETRE_733360.aspx
Comme dis Leprov j'ai pas tout tout compris et encore moin avec ce code la mais sa a le merite de marcher donc je vais la regarder de plus pret afin de comprendre quelque chose. Ce qui me chagrine c'est qu'apparment il y a plus simple avec ce code :

Bitmap lbl = new Bitmap(label1.Size.Width, label1.Size.Height);          
Rectangle lblr = new Rectangle(100, 50, label1.Size.Width, label1.Size.Height);

mais je n'arrive pas a l'utiliser donc, merci pour les reponses et je vais essayer de mieux comprendre tout sa.
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
14 nov. 2006 à 15:40
private void pd_PrintPage(object sender, PrintPageEventArgs e)
            {        
                e.Graphics.DrawString("coucou, voili un ptit test", new Font(FontFamily.GenericSansSerif, 4), new            SolidBrush(Color.Black), 25, 45);

                // Je crée l'image ??
                Bitmap lbl = new Bitmap(label1.Size.Width, label1.Size.Height);    
                / / Sa position c'est ?
                Rectangle lblr = new Rectangle(100, 50, label1.Size.Width, label1.Size.Height);
                // Et je l'affiche ? Le problème est qu'il demande une Image et non un Bitmap c'est sa le soucis?
                e.Graphics.DrawImage((Image)lbl, lblr);
            }

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
14 nov. 2006 à 06:17
mouaip... et l'image du controle... tu la dessines quand ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
14 nov. 2006 à 09:33
tu n'as dessiné que ta string dans ton graphics (pour dire les choses plus simplement). ton bitmap est présent en mémoire mais n'est dessiné nulle part
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 nov. 2006 à 10:16
Yeps, il faut certainement ajouter un Graphics.DrawImage() qqe part ;-)

<hr size="2" />-Blog-
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
14 nov. 2006 à 14:19
Merci bien de m'aider.
Donc j'ai tenté le graphic.drawImage mais pas de resultat :/

 private void pd_PrintPage(object sender, PrintPageEventArgs e)
            {        
               
e.Graphics.DrawString("coucou, voili un ptit test", new
Font(FontFamily.GenericSansSerif, 4), new           
SolidBrush(Color.Black), 25, 45);

                // Je crée l'image ??
                Bitmap lbl = new Bitmap(label1.Size.Width, label1.Size.Height);    
                / / Sa position c'est ?
                Rectangle lblr = new Rectangle(100, 50, label1.Size.Width, label1.Size.Height);
                // Et je l'affiche ? Le problème est qu'il demande une Image et non un Bitmap c'est sa le soucis?
                e.Graphics.DrawImage(lbl, lblr);
            }
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
14 nov. 2006 à 15:07
hum... Bitmap hérite de Image...

Donc... e.Graphics.DrawImage peut servir pour une Bitmap !

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
14 nov. 2006 à 15:54
Merci pour le code mais je n'y arrive toujours pas avec cette methode il ne m'affiche rien du tout surement a cause du hdc qui n'est pas recuperer ou truc dans ce gout. Je m'attarderais la dessus plus tard quand j'aurais a peu pres compris la l'autre source je devrais pouvoir m'en sortir.
Merci pour votre patience.
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
14 nov. 2006 à 16:16
je répète, ton bitmap ne contient rien, cest donc normal que tu naffiche rien. avant
e.Graphics.DrawImage((Image)lbl, lblr);
tu dois remplir le contenu de ton objet bitmap...
0
Rejoignez-nous