Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wandern mit CopyRect (https://www.delphipraxis.net/146199-wandern-mit-copyrect.html)

Jazzman_Marburg 15. Jan 2010 11:42


Wandern mit CopyRect
 
Werte Gemeinde!

Irgendwie hab ich mal wieder Tomaten auf den Augen -- ich kann es einfach nicht fassen:

Ich kopiere mit CopyRect ein konstant großes Rechteck aus einer Bitmap1 auf eine zweite Bitmap2. Dabei wandere ich Schrittweise von links nach rechts in der Bitmap1. Am Anfang ist alles ok, aber mit zunehmender Schrittanzahl sehe ich, dass scheinbar der Bereich den ich aus der Bitmap1 kopiere immer größer wird und immer verkleinerter auf Bitmap2 dargestellt wird. Ich bin aber sicher, dass das Rechteck, welches ich kopiere konstant in seiner Größe ist.
Hier die entsprechende Stelle im Code:

Delphi-Quellcode:
    X1 :=  0;
  X2 := 100;
...
  LOOP
    INC(X1); // wir wandern von links nach rechts
    INC(X2); // dito, also ist das Rechteck doch konstant groß?!

    {--- Kopiert Rechteck aus Bitmap1 nach Bitmap2 ----------------------}
    BMP2.Canvas.CopyRect( Bounds(0, 0, 100, 100), BMP1.Canvas, Bounds(X1, 0, X2, 100));

    {--- Zeigt das Kopierte in BMP3 an ----------------------------------}
    BMP3.Canvas.CopyRect ( Bounds(0, 0, 100, 100), BMP2.Canvas, Bounds(0, 0, 100, 100));

  ENDLOOP
Das was ich in BMP3 zu sehen bekomme ist im 1. Schritt 100% ok, mit jedem weiterem Schritt jedoch, wird scheinbar der kopierte Bereich immer größer und wird im BMP3 ge-stratcht dargestellt (gestaucht, verkleinert).

Zauberei? Jemand eine Idee, was ich da falch mache?

Vielen Dank!
Jazzman

Uwe Raabe 15. Jan 2010 11:50

Re: Wandern mit CopyRect
 
Der dritte Parameter in Bounds gibt die Breite an, nicht den rechten Rand!

Delphi-Quellcode:
function Bounds(ALeft, ATop, AWidth, AHeight: Integer): TRect;

Jazzman_Marburg 15. Jan 2010 12:03

Re: Wandern mit CopyRect
 
Wow!
Und ich fragte mich schon gestern Abend, was denn wohl der Unterschied zwischen BOUNDS und RECT ist... unterliße es aber, das herauszufinden. :wall: Jetzt weiss ich es.

Vielen Dank und 'nen schönen Tag!
Gruß
Jazzman


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.

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