Autor Beitrag
delphimike
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Fr 14.02.03 15:05 
Das Drucken über Printer.canvas funktioniert soweit problemlos, außer wenn es um Bitmaps geht. Über Canvas.draw (und die verwandten Prozeduren)führt kein einziger Versuch zum Erfolg. Es ist als würde der Befehl ignoriert.

Wie lassen sich Bitmaps drucken ?
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Fr 14.02.03 15:36 
Bei mir fallen die Bitmaps, wenn ich sie über Canvas.Draw drucke, sporadisch aus.

Eine Lösung habe ich mit GetDIBSizes, GetDIB und StretchDIBits hinbekommen.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure CopyBmpRect(Canvas: TCanvas; const DestRect: TRect; ABitmap: TBitmap;
  const SourceRect: TRect);
var
  Header, Bits: Pointer;
  HeaderSize, BitsSize: Cardinal;
begin
   GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize);
   GetMem(Header, HeaderSize);
   GetMem(Bits, BitsSize);
   try
     GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
     StretchDIBits(Canvas.Handle,
        DestRect.Left, DestRect.Top,
        DestRect.Right - DestRect.Left, DestRect.Bottom - DestRect.Top,
        SourceRect.Left, SourceRect.Top,
        SourceRect.Right - SourceRect.Left, SourceRect.Bottom  - SourceRect.Top,
        Bits, TBitmapInfo(Header^),
        DIB_RGB_COLORS, Canvas.CopyMode);
   finally
     FreeMem(Header);
     FreeMem(Bits);
   end;
end;

_________________
Ist Zeit wirklich Geld?


Zuletzt bearbeitet von AndyB am Fr 14.02.03 17:27, insgesamt 1-mal bearbeitet
delphimike Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Fr 14.02.03 17:14 
Mein Drucker hat wirklich ein Bild gedruckt

vielen herzlichen Dank !!!!