Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bilder spiegelverkehrt? (https://www.delphipraxis.net/76004-bilder-spiegelverkehrt.html)

alienous 28. Aug 2006 16:18


Bilder spiegelverkehrt?
 
hi, habe folgenden code, und schaffe es nicht, die bilder richtigrum zu drucken, sie werden immer spiegelverkehrt gedruckt, wieso?

Delphi-Quellcode:
procedure printpicture(PCanvas : TCanvas; px1, py1, px2, py2 : Integer; pkarte : string; pgamma : Smallint);
var gra,gra2 : Tbitmap32;
    KRS: TKernelResampler;
begin
        gra := Tbitmap32.Create;
        gra2 := Tbitmap32.Create;

        gra2.Height := (py1 *(-1)) - (py2 * (-1));
        gra2.Width := px2 - px1;

        gra.LoadFromFile(pkarte);

        KRS := TKernelResampler.Create(gra);
        KRS.Kernel := TLanczosKernel.Create;

        gra.Rotate270();
        gra.DrawTo(gra2,gra2.BoundsRect, gra.BoundsRect);

        BitBlt(pcanvas.Handle,px1,py1,gra2.Width,gra2.Height,gra2.Canvas.Handle,0,0,SRCCOPY);
        gra.Free;
        gra2.Free;
end;
so wird die funktion aufgerufen:

Delphi-Quellcode:
      with Printer do
      begin

        BeginDoc;
        SetMapMode(Canvas.Handle, MM_LOMETRIC);
Standardvnew(Canvas, 0, -2760, 1015, -1380, OpenPictureDialog2.FileName, 0);
        EndDoc;
      end;
eigentlich müsste es unten links 1/4tel eines dina4 blattes einnehmen, tut es auch, nur spiegelverkehrt! :wiejetzt: woran liegt es? danke

Der_Unwissende 28. Aug 2006 16:31

Re: Bilder spiegelverkehrt?
 
Wegen BitBlt. Was es genau damit auf sich hat findest du mit der Suche!

Einfach gesagt abstrahiert diese Methode nicht vom verwendeten Device. Verwendest du die Canvas.Draw Methode steht alles richtig rum (StretchDraw für StretchBlt).

Gruß Der Unwissende

Namenloser 28. Aug 2006 16:49

Re: Bilder spiegelverkehrt?
 
Zitat:

Zitat von Der_Unwissende
Wegen BitBlt. Was es genau damit auf sich hat findest du mit der Suche!

Einfach gesagt abstrahiert diese Methode nicht vom verwendeten Device. Verwendest du die Canvas.Draw Methode steht alles richtig rum (StretchDraw für StretchBlt).

Gruß Der Unwissende

warum nicht gleich gra2.drawto(pcanvas,...)?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz