| Autor |
Beitrag |
Florens
      
Beiträge: 32
|
Verfasst: Fr 19.11.10 22:28
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
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Fr 19.11.10 22:32
Musst du das zweite Image mit FindComponent suchen oder was willst du wissen?
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Florens 
      
Beiträge: 32
|
Verfasst: 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
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: 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. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Florens 
      
Beiträge: 32
|
Verfasst: 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
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: 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.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: 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,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Fr 19.11.10 22:59
@ Hidden, genau meine Rede.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: 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(...)
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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.
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: 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 
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Für diesen Beitrag haben gedankt: bummi
|
|