Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - prüfen ob Image über ein anderes Image ist?
Florens - Fr 19.11.10 22:28
Titel: prüfen ob Image über ein anderes Image ist?
Hallihallo liebe Community,
Ich versuch gerade ohne 4 If Then Abfragen zu machen zu prüfen, ob ein Image(welches beweglich ist) über einem anderen liegt. Gibt es dafür eine Function oder ähnliches? (Ich will nicht prüfen, ob die genau auf dem selben Punkt liegen sondern ob x und y vom Image1 im Rechteck des Image2 liegen).
Danke für jede Antwort
MfG Flo
Dude566 - Fr 19.11.10 22:32
Musst du das zweite Image mit FindComponent suchen oder was willst du wissen?
Florens - Fr 19.11.10 22:36
Ich will ein Spiel machen das quasi wie Snake funktioniert so und jetzt findet die Schlange (Image1) Den Apfel(Image2). Ich hoffe jetzt ist klar was ich meine. Deswegen ist meine Googlesuche auch gescheitert.
Dude566 - Fr 19.11.10 22:40
Ja du musst halt prüfen ob die Koordinaten deines ersten Images sich mit denen des zweiten Images überschneiden.
Du kannst das ganze aber auch mit einer Paintbox machen und deine Figuren selbst zeichnen, ob das besser ist kann ich aber auch nicht sagen. ;)
Florens - Fr 19.11.10 22:43
Dude566 hat folgendes geschrieben : |
| Ja du musst halt prüfen ob die Koordinaten deines ersten Images sich mit denen des zweiten Images überschneiden. |
Ja wie denn. Da muss es doch eine andere Möglichkeit geben als 4 If then-Anweisungen zu machen von wegen if w>top-30 then...if w<top+30 etc.
Dude566 - Fr 19.11.10 22:48
Es gibt halt keine Funktion namens IfImage1AufImage2. ^^
Es wird ja wohl kein großer Aufwand sein die Abfragen zu implementieren, wenn doch dann stell bitte konkrete Fragen.
Hidden - Fr 19.11.10 22:53
Moin!
Ich hoffe, es bringt uns nicht zu weit vom Thema ab wenn ich erwähne, dass visuelle Komponenten eigentlich nicht so benutzt werden sollten ;)
Für spätere Programme nimmst du vielleicht eine einzelne Komponente(Image/Paintbox), und zeichnest alle Bilder mit .Canvas.Draw/.Canvas.StretchDraw auf diese eine.
Grüße,
Dude566 - Fr 19.11.10 22:59
@
Hidden, genau meine Rede.
bummi - Sa 20.11.10 01:20
man soll zwar Daten von der Oberfläche trennen, aber zur veranschaulichung von Funktionen, malen kann man später noch aus Klassen auf TGraphicControls
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button1Click(Sender: TObject); var InterRect:Trect; begin if intersectrect(InterRect,Shape1.BoundsRect,Shape2.BoundsRect) then begin Showmessage(Format('Left: %d'#13#10'Top: %d'#13#10'Righ: %d'#13#10'Bottom: %d', [Interrect.Left, Interrect.Top, Interrect.Right, Interrect.Bottom] ) ); With Tshape.Create(self) do begin Parent := self; left := Interrect.Left; top := Interrect.Top; width := Interrect.Right - Interrect.Left; height := Interrect.Bottom - Interrect.Top; Brush.Style:= bsCross; Brush.Color := clYellow end; end;
end; |
Lannes - Sa 20.11.10 01:27
Hallo,
Florens hat folgendes geschrieben: |
| Ich will nicht prüfen, ob die genau auf dem selben Punkt liegen sondern ob x und y vom Image1 im Rechteck des Image2 liegen |
dafür reicht
PtInRect(...)
bummi - Sa 20.11.10 01:31
mag sein daß ich es falsch verstanden habe, kann auch sein daß er es falsch formuliert hat, mit Deinem und meine Hinweis hat er in jedem Fall allen Optionen offen.
Lannes - Sa 20.11.10 01:41
du hast nicht falsch verstanden, eher weiter gedacht ...
er wird deinen Vorschlag vermutlich benötigen wenn sein Image mal aus einer anderen Richtung geschoben wird, dann nützt ihm x und y nicht mehr viel :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!