Autor Beitrag
Florens
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Fr 19.11.10 22:43 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Fr 19.11.10 22:59 
@user profile iconHidden, genau meine Rede.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Sa 20.11.10 01:27 
Hallo,

user profile iconFlorens 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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:

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )

Für diesen Beitrag haben gedankt: bummi