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!
Version imprimable
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:
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:
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 metreCitation:
Envoyé par pottiez
ensuite pour la ligneCode:TPrinter *Prntr = Printer();
j'ai plein d'erreur, alors que faut-il mettre a la place pour avoir une bonne compilation?Code:Prntr->Canvas->StretchDraw(Image1->Picture,Rect);
Effectivement, il manqué une * désolé.
Quel sont les messages d'erreur ?Citation:
Envoyé par Galkir
Les erreurs sont
Touste les erreurs sont a la ligneCitation:
Envoyé par Erreurs
Code: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 foisCode:
1
2 Prntr->Canvas->StretchDraw(Rect,Image1->Picture);
Code:Prntr->StretchDraw(Rect, Image1->Picture->Bitmap);
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:
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 erreursCode:Prntr->Canvas->StretchDraw(Rect,Image1->Picture);
et pour la ligneCitation:
[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:Prntr->Canvas->StretchDraw(Rect, Image1->Picture->Bitmap);