Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Image Position überprüfen (https://www.delphipraxis.net/167041-image-position-ueberpruefen.html)

newmusicslamer 10. Mär 2012 17:17

Delphi-Version: 7

Image Position überprüfen
 
Hallo!

Ich bins schonwieder...
Ich habe eine Frage unzwar will ich mit einem Timer überprüfen ob ein image auf einem anderen ist. das habe ich hiermit versucht:
Code:
procedure TForm1.Timer3Timer(Sender: TObject);
begin
if (image1.Top = image5.Top) and (image1.Left = image5.Left) then
gauge1.Progress := gauge1.Progress - 10 ;

end;
Das klappt leider nicht D:

Ich hoffe ihr könnt mir helfen!

newmusicslamer 10. Mär 2012 17:31

AW: Image Position überprüfen
 
diese Antwort ist rein unnötig, da im falschen thread gepostet wurde :D

himitsu 10. Mär 2012 17:35

AW: Image Position überprüfen
 
Zitat:

Zitat von newmusicslamer (Beitrag 1155831)
diese Antwort ist rein unnötig, da im falschen thread gepostet wurde :D

:gruebel:

Der Code ist soweit richtig, aber sicher, daß die Images genau übereinanderliegen? (nichtmal 1 Pixel daneben)

newmusicslamer 10. Mär 2012 17:42

AW: Image Position überprüfen
 
Die erste Antwort von mir musst du nicht verstehen... Wollte eine Antwort auf einen Thread schreiben, aber nicht für diesen Thread also schnell editiert...

Nein, eigentlich sollte das funktionieren, denn image5 bewegt sich immer plus (oder minus) 50. Und image1 mit 10. Die left endet beides auf 4. Top auf... oh... Sind nicht gleich groß :lol: schnell geändert und nein funktioniert immer noch nicht :(

noob2k9 10. Mär 2012 17:50

AW: Image Position überprüfen
 
Du möchtest also überprüfen ob 2 Rechtecke sich überlappen nehme ich an

Schau dir mal die Funktion IntersectRect() an

Delphi-Quellcode:
function IntersectRect(const Rect1, Rect2: TRect): Boolean;
function IntersectRect(out Rect: TRect; const R1, R2: TRect): Boolean;
function IntersectRect(const Rect1, Rect2: TRectF): Boolean;
function IntersectRect(out Rect: TRectF; const R1, R2: TRectF): Boolean;
Um zu prüfen ob sich 2 Rechtecke überlappen benötigst du insgesamt 4 Vergleiche - wenn du sicherstellen kannst das die Rechtecke sich nur entlang einer Achse bewegen reichen sogar 2 ;)

newmusicslamer 10. Mär 2012 17:52

AW: Image Position überprüfen
 
geht das auch mit images?

noob2k9 10. Mär 2012 18:03

AW: Image Position überprüfen
 
Ein einfacher Aufruf könnte so aussehen

Delphi-Quellcode:
if IntersectRect(Image1.BoundsRect, Image2.BoundsRect) then begin
  //...
end;
Einen Nachteil hat diese Funktion jedoch: Sie liefert auch True zurück wenn die Rechtecke exakt nebeneinander liegen ohne sich zu überlappen. Wenn dies nicht der Fall sein sollte müsstest du dir eine eigene Funktion bauen (siehe oben 4 Vergleiche)

newmusicslamer 10. Mär 2012 20:14

AW: Image Position überprüfen
 
Jetzt sagt er mir dazu: Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden.
:?:
Könntest du sonst mal als Beispiel einen ganzen Quellcode posten? Ich bin noch ein blutiger Anfänger was Delphi und programmieren angeht...

Bummi 10. Mär 2012 22:05

AW: Image Position überprüfen
 
Delphi-Quellcode:
var
  r: Trect;
begin
  if intersectRect(r, Image1.BoundsRect, Image2.BoundsRect) then
  begin
    Caption := Format('L: %d, T: %d, R: %d B: %d', [r.Left, r.Top, r.Right,
      r.Bottom]);
  end;
end;

newmusicslamer 11. Mär 2012 09:50

AW: Image Position überprüfen
 
Danke jetzt geht es mir hat nur die Variable gefehlt :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 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