Voila, suite a un traitement, j'ai une image que je suis succeptible d'imprimer, mais j'aimerais savoir comment on fait pour l'imprimer, quelque soit la taille, sur une seule page!
Voila, suite a un traitement, j'ai une image que je suis succeptible d'imprimer, mais j'aimerais savoir comment on fait pour l'imprimer, quelque soit la taille, sur une seule page!
Tu peut utiliser la classe TPrinter, il suffit de mettre dans le canvas de ton TPrinter une image grace a la fonction DrawFocusRect, en lui spécifiant le rectangle dans lequel tu veut qu'elle s'affiche (Objet TRect qui spécifie les taille de la largeur et de la hauteur)
en regardant la classe TPrinter, j'ai vu canvas comme tu me l'avais dit
si je met le code la, ca marcherai? Image1 est une image avec proportional true
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void __fastcall TForm1::Button1Click(TObject *Sender) { TPrinter Prntr = Printer(); Image1->Width = Prntr->PageWidth; Image1->Height = Prntr->PageHeight; Prntr->BeginDoc(); Prntr->Canvas = Image1->Canvas); Prntr->EndDoc(); }
Tu peut essayer, a mon avis ca imprimerait bien l'image mais cela ne serai pas proportionnel a ta feuille, pour cela il faut vraiment utiliser la fonction que je t'ai donné.
je travaillerai ca demiain, je mettrait mon resultat quand j'aurai troouvé^^
Excuse moi, la fonction est StretchDraw
Le code n'est pas très compliqué :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void __fastcall TForm1::Button1Click(TObject *Sender) { TPrinter Prntr = Printer(); TRect Rect ; //Definir le coordonnée du Rect. Image1->Width = Prntr->PageWidth; Image1->Height = Prntr->PageHeight; Prntr->BeginDoc(); Prntr->Canvas->StretchDraw(Image1->Picture,Rect); Prntr->EndDoc(); }
J'i essayé ton code, mais il ne fonctionne pas, tout d'abord, il faut metreEnvoyé par pottiez
ensuite pour la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part TPrinter *Prntr = Printer();j'ai plein d'erreur, alors que faut-il mettre a la place pour avoir une bonne compilation?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Prntr->Canvas->StretchDraw(Image1->Picture,Rect);
Effectivement, il manqué une * désolé.
Quel sont les messages d'erreur ?Envoyé par Galkir
Les erreurs sont
Touste les erreurs sont a la ligneEnvoyé par Erreurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part Prntr->Canvas->StretchDraw(Image1->Picture,Rect);
Euh normal, j'ai inversé le Rect et le Image1->Picture, il faut remplacer cette ligne par
Désolé encore une fois
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Prntr->Canvas->StretchDraw(Rect,Image1->Picture);
Code : Sélectionner tout - Visualiser dans une fenêtre à part Prntr->StretchDraw(Rect, Image1->Picture->Bitmap);
Site : http://chgi.developpez.com
Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)
merci, la compilation fonctionne, mais a l'execution, aucune image n'apparait.
j'utilise cute pd writer (pour ne pas gacher de feuilles) et il me cré une page blanche de 600ko
j'ai quand même essayer de trouver ue autre solution, mais celle ci s'avère etre longue, et la taille de l'image n'est pas tres grande (environ 6*4 cm pour une image en 1392*1040 pixels.taille = 5.93Mo)
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 TPrinter *Prntr = Printer(); TRect rec = Rect(100, 100, Prntr->PageWidth - 100, Prntr->PageHeight - 100); if (Image1->Width > Prntr->PageWidth) { Image1->Width = Prntr->PageWidth - 200; Image1->Height = (Prntr->PageWidth - 200) * (HeightImage1 / WidthImage1); } if (Image1->Height > Prntr->PageHeight) { Image1->Width = (Prntr->PageHeight - 200) * (WidthImage1 / HeightImage1); Image1->Height = Prntr->PageHeight - 200; } Prntr->BeginDoc(); for (int y = 0; y < Image1->Height; y++) { for (int x = 0; x < Image1->Width; x++) { Prntr->Canvas->Pixels[x+200][y+200] = Image1->Canvas->Pixels[x][y];//StretchDraw(rec,Image1->Picture->Bitmap); } } Prntr->EndDoc();
Je comprand pas trop pourquoi ca fonctionne pas, je verifirai sur mon programme ce soir, je ne l'ai pas avec moi au boulot.
J'ai mal préciser les choses :
pour la lignej'ai les erreurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part Prntr->Canvas->StretchDraw(Rect,Image1->Picture);et pour la ligne[C++ Avertissement] fich_etude.cpp(82): W8018 Affectation de int en TColor
[C++ Erreur] fich_etude.cpp(116): E2034 Impossible de convertir 'TPicture * const' en 'TGraphic *'
[C++ Erreur] fich_etude.cpp(116): E2342 Mauvaise correspondance de type dans le paramètre 'Graphic' ('TGraphic *' désiré, 'TPicture *' obtenu)la compilation se fait, mais je n'ai aucun résultats sur ma page pdf!
Code : Sélectionner tout - Visualiser dans une fenêtre à part Prntr->Canvas->StretchDraw(Rect, Image1->Picture->Bitmap);
Partager