begin process at 2012 02 11 09:33:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Mutimédia

 > 

Autre

 > 

Impression d'un bitmap : Page Blanche


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

Impression d'un bitmap : Page Blanche

jeudi 5 avril 2007 à 12:48:03 | Impression d'un bitmap : Page Blanche

Francky23012301

Membre Club
Salut à tous,

Je travaille actuellement avec le composant TGraphXY de Kénavo. J'ai besoin de pouvoir l'imprimer en noir et blanc, j'utilise donc ce code là :

procedure TForm1.Print_BtClick(Sender: TObject);
Var
Img:TImage;
BitMap:TBitMap;
BcCl,GdCl,Cl:TColor;
Rect:TRect;
begin
If not PrinterSetupDialog1.Execute then Exit;
BitMap:=TBitMap.Create;
BitMap.Width:=Graph.Width;
BitMap.Height:=graph.Height;
With Graph Do
  Begin
  BcCl:=BackColor;
  GdCl:=GridColor;
  Cl:=Color;
  BackColor:=ClWhite;
  GridColor:=ClBlack;
  Color:=ClBlack;
  Graph.PaintTo(BitMap.Canvas,0,0);
  BackColor:=BcCl;
  GridColor:=GdCl;
  Color:=Cl;
  End;
  try
    With Printer Do
      Begin
      Rect.Left:=(Width-BitMap.Width) Div 2;
      Rect.Right:=Rect.Left+BitMap.Width;
      Rect.Top:=(height-BitMap.height) Div 2;
      Rect.Bottom:=Rect.Top+BitMap.Height;
      Img:=TImage.Create(nil);
      Img.Picture.Bitmap.Assign(BitMap);
      While Img.Picture.Bitmap.Empty Do
      Application.ProcessMessages;
      BeginDoc;
      Canvas.StretchDraw(Rect,Img.Picture.Bitmap);
      EndDoc;
      Img.Free;
      End;
  Except
    Showmessage('Imprimante absnete ou autre erreur');
  End;
BitMap.Free;
End;

Malheureusement j'obtient une magnifique page blanche : Si quelqu'un a une idée du pourquoi du comment ?

Merci

@+
vendredi 6 avril 2007 à 15:00:20 | Re : Impression d'un bitmap : Page Blanche

Kenavo

Réponse acceptée !
Ben ça alors ! TGraphXY

Je t'avouerai que je n'ai jamais cherché à les imprimer !
Et pi y en a des tartes o comcombr' qui ont coulé sous les ponts depuis.

et pi là je suis en vacances sans le moindre bout d'imprimante à porté de câble.

Bon courage

Ken@vo

Code, Code, Codec !

samedi 7 avril 2007 à 19:24:25 | Re : Impression d'un bitmap : Page Blanche

ThWilliam

Membre Club
Réponse acceptée !
Salut Francky,

Je ne connais pas TGraphXY, mais je vois plusieurs problèmes dans ton code :

1) dans with printer do... , tu utilises Width et Height : à remplacer par PageWidth et PageHeight.
2) ton code ne s'adapte pas à un bitmap plus grand que le nbpixels de la page (mais ce n'est peut-être pas nécessaire ?). 
3) pourquoi créer un TImage, alors qu'il suffit de faire : Printer.Canvas.StretchDraw(Rect, Bitmap); ?

A +
Thierry
dimanche 8 avril 2007 à 23:37:30 | Re : Impression d'un bitmap : Page Blanche

Francky23012301

Membre Club
Salut et merci pour vos réponses

@Kénavo : comme quoi il est pas démodé ton composant .

@Thierry : Pour PageWidth et PageHeight : problème de copier coller  autant pour moi .(toute facon, Printer.width n'existe pas il me semble).
Pourquoi utiliser un TImage plutot qu'un TBitMap : ben comme ca ne fonctionnait pas j'ai essayé de bidouiller.

En fait que cela soit un TImage ou TBitmap, la partie qui plante est la partie impression : si on "remplace"  Printer.Canvas.StretchDraw(Rect, Bitmap) par clipboard.Assign(Image1.BitMap) ou clipboard.Assign(Image1.Img.Picture)  cela fonctionne nickel : avec un coller on récupère bien l'image centrée comme il faut. Je pense qu'il y a un problème de refresh quelque part mais je ne vois pas ou et surtout pas pourquoi.

Je sais que l'impression des bitmap est délicate mais à ce point, je me doutais pas.

Merci à vous
lundi 9 avril 2007 à 10:40:56 | Re : Impression d'un bitmap : Page Blanche

ThWilliam

Membre Club
Réponse acceptée !

Salut Francky.

Comme tu dessines sur le Canvas du Bitmap, j'ai fait le test suivant :

procedure TForm1.Button1Click(Sender: TObject);
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  with Bitmap do
  begin
     Width:= 300;
     Height:= 300;
     //
     Canvas.Brush.Color:= clBlack;
     Canvas.FillRect(Rect(0,0,Width,Height));
  end;
  with Printer do
  begin
     BeginDoc;
     Canvas.Draw(300,300,Bitmap);
     EndDoc;
  end;
  Bitmap.Free;
end;

Résultat : page blanche !!!

Si à l'endroit des //,  tu codes : PixelFormat:= pf24Bit; (ou pf32bit) ... tout marche bien.
Je suppose que l'explication est qu'une imprimante travaille en mode RGB et qu'il faut donc transformer le bitmap en niveaux de couleurs RGB.

A +
Thierry

lundi 9 avril 2007 à 18:04:47 | Re : Impression d'un bitmap : Page Blanche

Francky23012301

Membre Club
Arfff pas bête ca : je n'y avais pas pensé du tout. Merci Thierry : ca marche nickel @+


Cette discussion est classée dans : rect, img, width, height, bitmap


Répondre à ce message

Sujets en rapport avec ce message

Bitmap, tableau de stockage .... [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Probleme erreur [ par cricri_b34 ] salut , j'ai fait un programme qui doit crer des composant tout fonctionne bien sauf quand je quitte, la ya plein d'erreur qui apparaisse je comprend os bloqué en convertissant bmp>jpg [ par crogger ] Bonjour, je fais de la capture d ecran que je convertit en jpg, et que je transmet en stream avec le composant NMSTRM de fastnet pour recuperer a dist Convertion d'un Jpeg en Bitmap puis stockage dans un tableau [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Convertion d'un Jpeg en Bitmap puis stockage dans un tableau [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Mettre le Handle du bureau dans une image jpg. [ par norton ] Hello quand je compile ceci delphi me dit que JPG:TJPEGImage n'est pas déclaré. (Undeclared identifier :'TJPEGImage') sur ma version j'ai delphi 6 ve redimensionner paintbox selon form.resize [ par seba31stien ] Bonjour, je souhaiterais redimensionner les dimensions de ma paintbox en fonction de la taille de la form. si l'utilisateur divise par deux la fiche, Appli en plein écran ? [ par seba31stien ] Bonjour, il doit exister un moyen de savoir si l'appli est en plein écran. j'envisage de comparer form.width et form.height à screen.width et screen.h Aide pour ce qui ressemble à un bug dans mon programme svp ... [ par cerber943 ] Bonjour,Voici mon problème je cherche à réaliser une fonction qui récupere une image TBitmap la découpe en 16 zones égales et retourne un tableau de 1 Question sur l'utilisation des TBitmap dans les fonctions... [ par cerber943 ] Bonjour, J'ai créé quelques fonctions qui retournent des TBitmap. Je rencontre actuellement une augmentation de l'espace mémoire alloué à mon programm


Nos sponsors


Sondage...

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,448 sec (3)

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