Registriert seit: 4. Aug 2006
36 Beiträge
|
AW: Image.Canvas wird invers gedruckt...
20. Sep 2012, 17:41
So Leute, hab die Lösung dank shmia gefunden
Hab mir dein Code von SwissDelphiCenter geholt und in meinen Source eingebaut und siehe da, es läuft auf allen Rechnern (und dies erst noch beliebig skalierbar)
Code:
procedure TTemperaturdaten.DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap);
var
Header, Bits: Pointer;
HeaderSize: DWORD;
BitsSize: DWORD;
begin
GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize);
Header := AllocMem(HeaderSize);
Bits := AllocMem(BitsSize);
try
GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^);
StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top,
DestRect.Right, DestRect.Bottom,
0, 0, ABitmap.Width, ABitmap.Height, Bits, TBitmapInfo(Header^),
DIB_RGB_COLORS, SRCCOPY);
finally
FreeMem(Header, HeaderSize);
FreeMem(Bits, BitsSize);
end;
end;
procedure TTemperaturdaten.PrintImage(Image: TImage; ZoomPercent: Integer);
// if ZoomPercent=100, Image will be printed across the whole page
var
relHeight, relWidth: integer;
begin
Screen.Cursor := crHourglass;
Printer.Orientation := poLandscape;
Printer.BeginDoc;
with Image.Picture.Bitmap do
begin
if ((Width / Height) > (Printer.PageWidth / Printer.PageHeight)) then
begin
// Stretch Bitmap to width of PrinterPage
relWidth := Printer.PageWidth;
relHeight := MulDiv(Height, Printer.PageWidth, Width);
end
else
begin
// Stretch Bitmap to height of PrinterPage
relWidth := MulDiv(Width, Printer.PageHeight, Height);
relHeight := Printer.PageHeight;
end;
relWidth := Round(relWidth * ZoomPercent / 100);
relHeight := Round(relHeight * ZoomPercent / 100);
DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), Image.Picture.Bitmap);
end;
Printer.EndDoc;
Screen.cursor := crDefault;
end;
procedure TTemperaturdaten.SpeedButton10Click(Sender: TObject);
Var rect:TRect;
Tmp_String:String;
Begin
if ((Daten_ok) AND (Abbruch=False)) then
begin
if(Mode=MD_TEMP_DATEN) then
begin
PrintImage(Image1, 100);
end;
end;
end;
Herzlichen Dank für Eure Mithilfe.
Wünsche Euch einen gemütlichen Feierabend...
|
|
Zitat
|