Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Impression d'un bitmap : Page Blanche [ Mutimédia / Autre ] (Francky23012301)

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é 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

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.