![]() |
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:
Das klappt leider nicht D:
procedure TForm1.Timer3Timer(Sender: TObject);
begin if (image1.Top = image5.Top) and (image1.Left = image5.Left) then gauge1.Progress := gauge1.Progress - 10 ; end; Ich hoffe ihr könnt mir helfen! |
AW: Image Position überprüfen
diese Antwort ist rein unnötig, da im falschen thread gepostet wurde :D
|
AW: Image Position überprüfen
Zitat:
Der Code ist soweit richtig, aber sicher, daß die Images genau übereinanderliegen? (nichtmal 1 Pixel daneben) |
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 :( |
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:
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 ;)
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; |
AW: Image Position überprüfen
geht das auch mit images?
|
AW: Image Position überprüfen
Ein einfacher Aufruf könnte so aussehen
Delphi-Quellcode:
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)
if IntersectRect(Image1.BoundsRect, Image2.BoundsRect) then begin
//... end; |
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... |
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; |
AW: Image Position überprüfen
Danke jetzt geht es mir hat nur die Variable gefehlt :?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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