begin process at 2012 02 10 03:56:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

J'AI BESOIN D'AIDE !!!! :O

 > 

BUG IMPRESSION DELPHI


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

BUG IMPRESSION DELPHI

mercredi 26 novembre 2003 à 10:08:01 | BUG IMPRESSION DELPHI

exae

J'ai un problème d'impression sous W98.

Pic := TPicture.Create;
Pic.LoadFromFile( 'c:\WINDOWS\monBmp.bmp' );
Printer.BeginDoc;
Printer.Canvas.StretchDraw( Rect( 100, 100, 200, 200), Pic.Graphic );
Printer.EndDoc;
Pic.Free;

Ce code fonctionne parfaitement sous XP mais image vide sous 98.

J'ai aussi essayé avec l'API stretchblt mais sous W98 la fonction me retourne le message d'erreur : Paramètre incorrect.

Que faire ?

EXAE
mercredi 26 novembre 2003 à 10:55:45 | Re : BUG IMPRESSION DELPHI

ManChesTer

Administrateur CodeS-SourceS
var Bmp :Tbitmap;

Bmp := Tbitmap.Create;
Bmp.LoadFromFile( 'c:\WINDOWS\monBmp.bmp' );
Printer.BeginDoc;
Printer.Canvas.StretchDraw( Rect( 100, 100, 200, 200), Bmp );
Printer.EndDoc;
Bmp.Free;

la ca devrais fontionner ;o))

Bon Coding ....

ManChesTer.
mercredi 26 novembre 2003 à 14:18:59 | Re : BUG IMPRESSION DELPHI

exae

Merci d'avoir répondu aussi rapidement, mais ça ne fonctionne pas à 100%, en effet si j'ajoute ce code dans une boucle toute simple, les images sont de temps en temps vides.

Le problème existe sous W98 mais pas sous XP.

Exemple :

var
Bmp :Tbitmap;
i : Integer;
Begin
Bmp := Tbitmap.Create;
Printer.BeginDoc;
For i := 1 To 20 Do Begin
// Pour simplifier je prend tjs la même image
Bmp.LoadFromFile( 'c:\MonBmp.bmp' );
Printer.Canvas.StretchDraw( Rect( i * 100, 100, i * 100 + 100, 200 ), bmp );
End;
Printer.EndDoc;
Bmp.Free;
End;


vendredi 29 juillet 2005 à 08:56:47 | Re : BUG IMPRESSION DELPHI

goloa

J'ai le meme problème que toi :

http://www.delphifr.com/forum.v2.aspx?ID=521892&post=ok

As-tu trouvé une solution depuis ?

respect robustesse

vendredi 29 juillet 2005 à 13:29:08 | Re : BUG IMPRESSION DELPHI

exae

Réponse acceptée !
Oui j'ai effectivement trouvé la solution, 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 !

samedi 30 juillet 2005 à 14:21:26 | Re : BUG IMPRESSION DELPHI

ManChesTer

Administrateur CodeS-SourceS
Arf désolé, je vins seulement de recevoir les mail me disant que se post avais bougé.
Je t'aurais proposé :

procedure PrinterStretchDraw(R:TRect;Bmp:TBitmap);
var
  BmpInfo,
  BmpData     : Pointer;
  BmpInfoSize,
  BmpDataSize : Cardinal;
begin
  GetDIBSizes(Bmp.Handle,BmpInfoSize,BmpDataSize);
  GetMem(BmpInfo,BmpInfoSize);
  GetMem(BmpData,BmpDataSize);
  try
   GetDIB(Bmp.Handle,Bmp.Palette,BmpInfo^,BmpData^);
   StretchDIBits(Printer.Canvas.Handle,R.Left,R.Top,R.Right,R.Bottom,
                 0,0,Bmp.Width,Bmp.Height,BmpData,TBitmapInfo(BmpInfo^),
                 DIB_RGB_COLORS,SRCCOPY);
  finally
   FreeMem(BmpData);
   FreeMem(BmpInfo);
  end;
end;

Pour l'utilisé :

 with printer do
 begin
  Orientation:=poLandscape;
  BeginDoc;
  Canvas.Lock;
  PrinterStretchDraw(Rect(0,0,Printer.PageWidth,Printer.PageHeight),Tonbmp);
  Canvas.Unlock;
  EndDoc;
 end;

Tu peux biensur modifier la taille du Rect...

Bon Coding ....

ManChesTer.


Cette discussion est classée dans : impression, delphi, bug, printer, pic


Répondre à ce message

Sujets en rapport avec ce message

Problème impression [ par bouba ] Bonjour, voici le code dont je me suis servis pour tester l'impression d'une simple chaine.procedure TfrmAssistantAvance.Button1Click(Sender: TObject) RAVE REPORT ET DELPHI 7 [ par jlp_alexandre ] Comment diriger une impression vers un PDF (ou un fichier) avec RAVE REPORT SANS IMPRESSION ?Quelque chose doit m'échapper quelque part.Bien merci par Un bug dans Delphi 6 ? [ par Kane ] Je viens d'ecrire le code suivant sous delphi 6 pro et j'obtient un drole de resultat ! Avant que la feuille devienne progressivement transparente ell impression avec delphi [ par nasersoft ] salutvoila j'ai une application qui genere une base de donnee dbf comporte de 30 a 35 champ, je  veux dir que le nombre de champs n'est pas fix.ma deu impression sous delphi 7 [ par didou2dek ] bonjour,je viens d'acquérir delphi7 et je ne vois plus l'onglet quickreport dont j'avais l'habitude de me servir pour gerer des états.quelqu'un peut i Bug Pentium 4 hyperthreading et applications delphi [ par magic56 ] Bonjour,Je rencontre un problème au lancement de certains programmes que j'ai développé en Delphi. En effet, lorsque l'hyperthreading est lancé, le pr Impression ? [ par stu76 ] Bonjour à tous,Je suis confronté à une question quel composant delphi dois-je utiliser pour l'impression RaveReport ou Quickreport ? Je travail sous d Aide pour Driver d'impression [ par MicFor ] Bonjour,Je suis sur un projet et je cherche de l'aide pour la réalisation d'un driver d'impression spécifique.Le but du programme est de générer un .b L'impression des Etat Sous Delphi 5 [ par sabrinafouad ] Salut tous ... Veuillez SVP m'informer sur les astuces d'impression des etats sous delphi 5 ...Merci ...By FOUAD Mohammed ... Impression Excel via Delphi [ par wisdeco81 ] Bonjour,   Je voudrais lancer l'impression d'une feuille excel directement depuis Delphi.  Tout ce que j'ai réussi a faire pour l'instant c'est import


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,884 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales