Accueil > Forum > > > > problème d'impression d'image
problème d'impression d'image
jeudi 28 juillet 2005 à 15:43:43 |
problème d'impression d'image

goloa
|
Bonjours a tous, Je poste ce message parce que j'ai un programme qui fonctionne mais pas à tous les coups. je m'explique : je désire imprimer plusieurs pages contenant des graphiques que je transforme en bitmap puis je colle ces bitmaps sur le canvas de l'imprimante Tmp_Fic := ExtractFileDir(Tab_Param[i,2])+'\tmp_fic.bmp'; graph := TMonGraph(pagedac_f.FindComponent('graph'+ IntToStr(i))); graph.SaveToBitmapFile(Tmp_Fic); Img_Graph := Timage.Create(pagedac_f); Img_Graph.Picture.LoadFromFile(Tmp_Fic); StretchDraw(PosGraph,Img_Graph.Picture.Graphic); Img_Graph.Free; Deletefile(Tmp_Fic);
Alors ce que je peux dire c'est que ça fonctionne mais par exemple sur une feuille avec 10 graph un coup il va m'en manquer 2 un autre coup 2 autres différent, un coup 3 et un autre coup aucun. J'ai fais des test sur Win98, 2000, XP et sur plusieurs imprimantes en A3 et A4 et avec Win2PDF. C'est la meme partout . Et qu'en je passe tout le code en débogage tout semble normal
Mes questions : Pourquoi ça merde aléatoirement ? Avez vous déja rencontrer ce problème ? pouvez vous m'indiquer comment le résoudre ou le contourner ?
respect robustesse
|
|
jeudi 28 juillet 2005 à 16:02:38 |
Re : problème d'impression d'image

CptPingu
|
Essaie cette fonction:
Procedure ImprimeBitmap(Bitmap :TBitmap; Orientation :TPrinterOrientation; IndexDeLimprimante, NombreDeCopie :integer);
begin {Les orientations sont : poPortrait, poLandScape}
if NombreDeCopie < 0 then NombreDeCopie := 1;
Printer.Copies := NombreDeCopie;
Printer.PrinterIndex := IndexDeLimprimante; // la premiere imprimante est l'index 0
Printer.Orientation := Orientation;
Printer.BeginDoc();
Printer.Canvas.Draw(0,0, Bitmap); // on dessine le canevas du Bitmap dans celui de Printer
Printer.EndDoc();
end;
|
|
jeudi 28 juillet 2005 à 16:11:05 |
Re : problème d'impression d'image

florenth
|
Vive CptPingu !! Il écrit "essaie cette fonction" et après il nous présente une procedure !!!
Bon ,trève de plaisanteries.
Goloa, on a du mal à s'y repérer dnas ton code, on ne sait pas ce qu'est TMonGraph.
Je ne connais, de plus, pas de procedures se nommant StretchDraw qui s'utilisent comme ce que tu nous montre.
Peux-tu commenter ton code et nous donner un code qui est compilable (ceui que tu as dans ton éditeur)?
Après cela, on pourra peut-être t'aider mieux.
Mais c'est vrai que la méthode de CptPingu me parrait plus claire.
Tu dis que tu imprime mais on ne voit de "Printer" pas plus que dans mon oeil.
@ ++
Florent
Si tu ne te plantes pas ...... tu ne poussera jamais
|
|
jeudi 28 juillet 2005 à 17:36:00 |
Re : problème d'impression d'image

goloa
|
"TMonGraph" correspond a un Tchart que j'ai paramétré. StretchDraw est une méthode de Tcanvas : procedure StretchDraw(const Rect: TRect; Graphic: TGraphic ); L'utilisateur de mon programme veut afficher 'n' mesures qui sont représentées dans les n TeeChart (1courbe par TeeChart). Quand il veut imprimer, il va passer dans ma boucle : WITH Printer.Canvas DO For i := 0 to n do Tmp_Fic := ExtractFileDir(Tab_Param[i,2])+'\tmp_fic.bmp'; //Recherche de mon TeeChart n° "n" graph := TMonGraph(pagedac_f.FindComponent('graph'+ IntToStr(i)));
//Sauvegarde de mon teechart dans un fichier graph.SaveToBitmapFile(Tmp_Fic);
//Chargement de mon fichier image contenant l'image du teechart dans une variable Img_Graph := Timage.Create(pagedac_f); Img_Graph.Picture.LoadFromFile(Tmp_Fic); //Positionnement du graphique sur le canvas de l'imprimante //coeff_width = largeur du canvas de l'imprimante / largeur du canvas où j'affiche mon graphique //coeff_height est la meme chose pour la hauteur
PosGraph.Left := round(152 * coeff_width); PosGraph.Right := pagewidth; PosGraph.Top := round(PageHeight * 0.07335) + round(StrToInt(Tab_param[i,10])*coeff_Height); PosGraph.Bottom := round(PageHeight * 0.07335) + round((StrToInt(Tab_param[i,10])+ StrToInt(Tab_param[i,11]))*coeff_Height); StretchDraw(PosGraph,Img_Graph.Picture.Graphic);
//Je libère a chaque fois les variables si je repasse encre dans la boucle elle seront recréées Img_Graph.Free; Deletefile(Tmp_Fic);
End; End; mon EndDoc viens apres le traçage de l'entetes et du pied de page Ce que je ne comprend pas c'est que je passe "n" fois dans cette boucle et que sur ces "n" fois les graphiques vont bien être enregistrer dans le fichiers 'tmp_fic.bmp' j'ai fais les test et meme si ils ne passent passe pas à l'impression ils sont dans les fichiers donc pas de problème avec la fonction 'SaveToBitmapFile' Maintenant il faut que je test si le 'LoadFromFile' fonctionne correctement et surtout à tous les coups. A mon avis il ne faut pas aller chercher d'erreur dans mon code puisqu'il fonctionne (Ok pas a tout les coups) mais je me pose des questions sur le buffer des imprimantes ou des chose du style. la boucle est traversée a chaque fois c'est sur ! et en débogage ça passe aussi sur le stretchDraw... Je pense que CptPingu parle de la fonction "Draw" je fais le test et je reviens à la charge
respect robustesse
|
|
vendredi 29 juillet 2005 à 08:53:10 |
Re : problème d'impression d'image
|
vendredi 29 juillet 2005 à 13:30:06 |
Re : problème d'impression d'image

exae
|
Réponse acceptée !
Il ne faut jamais utiliser StrechDraw avec le canvas d'une imprimante.
Alors voici la fonction qui marche à tous les coups :
Procedure PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
Var
BitmapHeader: pBitmapInfo;
BitmapImage : POINTER;
HeaderSize : DWORD; // Use DWORD for D3-D5 compatibility
ImageSize : DWORD;
BEGIN
GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
GetMem(BitmapHeader, HeaderSize);
GetMem(BitmapImage, ImageSize);
Try
GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
StretchDIBits(Canvas.Handle,
DestRect.Left, DestRect.Top, // Destination
Origin
DestRect.Right - DestRect.Left, // Destination Width
DestRect.Bottom - DestRect.Top, // Destination Height
0,
0,
// Source Origin
Bitmap.Width, Bitmap.Height, // Source Width
& Height
BitmapImage,
TBitmapInfo(BitmapHeader^),
DIB_RGB_COLORS,
SRCCOPY)
Finally
FreeMem(BitmapHeader);
FreeMem(BitmapImage)
End;
END;
 Apparement personne n'imprime d'image avec DELPHI !
|
|
vendredi 29 juillet 2005 à 14:53:19 |
Re : problème d'impression d'image
|
Cette discussion est classée dans : graph, img, tmp, coup, fic
Répondre à ce message
Sujets en rapport avec ce message
supprimer des *.tmp [ par snakefinger ]
salut:1)je voudrais savoir comment effacer des fichiers telque *.tmp,*.old2)kel sont les autres fichiers inutile qu'il faut supprimer a part les *.old
tous est inactif... [ par okeefe ]
j'ai un programme qui fonctionne plutôt bizarrement...en mode edition, je peux voir mes données...en mode execution non....mode editionmode executio
MEMO [ par intello2001 ]
comme sur l'image ci-dessous j'aimerai metre des couleur dans mon memo.(une ligne rouge, une autre bleu par exemple)mais je n'arive qu'a changer la co
MEMO [ par intello2001 ]
comme sur l'image ci-dessous j'aimerai metre des couleur dans mon memo.(une ligne rouge, une autre bleu par exemple)mais je n'arive qu'a changer la co
MEMO [ par intello2001 ]
comme sur l'image ci-dessous j'aimerai metre des couleur dans mon memo.(une ligne rouge, une autre bleu par exemple)mais je n'arive qu'a changer la co
MEMO [ par intello2001 ]
comme sur l'image ci-dessous j'aimerai metre des couleur dans mon memo.(une ligne rouge, une autre bleu par exemple)mais je n'arive qu'a changer la co
incrementation [ par okeefe ]
sous interbase, je sais pas trop comment my prendre pour la situation suivante...j'ai une table location, une table voiture et une table qui relie les
Aidez moi svp [ par AMokers ]
Salut à tous !Voila je n'arrive pas a utilisé les thread Enfin je voudrais controller les fenetres aol et tou mais je c pas trop faire. Kelk1 a des tu
Simulation, graph, math... [ par ryadus ]
Salut, je voudrais savoir si quelqu'un connais quelques chose sur la simulation, comment dessiner la courbe d'une fonction, sur l'optimisation, les fi
Bug !!! [ par Bombela ]
Salut !Je fais une copie de fichier avec 2 TfileStream en passant par un TZCompressionStream de l'unitée ZLibEx.La copie avec compression marche vraim
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|