AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Überprüfen ob ein rectangle ein anderes überlappt
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen ob ein rectangle ein anderes überlappt

Ein Thema von fox67 · begonnen am 12. Jan 2011 · letzter Beitrag vom 16. Jan 2011
Antwort Antwort
Seite 3 von 4     123 4      
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#21

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 15:58
Zitat:
Alle Antworten beziehen sich immer auf Koordinaten, diese haben keine Bindung zu einem Canvas, Image was auch immer. Wenn Du etwas malen willst hast Du auch schon Koordinaten.
Wenn Du vor dem Malen auf eine Kollision prüfen willst, verwende die genannten Funktionen um zu prüfen ob Du mit den Koordinaten mit denen Du malen möchtest ein "Problem" bekommst.
Oder meinst Du etwas ganz anderes ....
Also ich habe zwei Tcanvas rectangle das eine kann der spieler steuern dass andere versucht den anderen zu fangen und deshalb versuche ich zu überprüfen ob eins der canvas das andere überlappt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#22

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 16:00
Du hast 2 Rechtecke, nicht Canvas.Rectangle Diese Rechtecke werden ja wohl über 4 Punkte definiert. Nun nimmst Du diese 4 Punkte und wandelst sie mittels der Rect-Function in 2 TRect, die Du der Berechnung übergeben kannst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#23

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 16:32
Meinst Du, Du haste zwei Images oder Shapes oder ähnliches welche Du hin und her schubst, falls ja dann Posting #5, ansonsten versteht hier niemand was Du nicht verstehst.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 16:40
Ich kann mich vielleicht noch eher in Anfänger hineindenken:

Du hast zwei Möglichkeiten:
Entweder, Du setzt 2 Komponenten (z.B. TImage oder testweise TPanel, eines rot, eines grün) auf ein Formular oder auf ein Panel, deren Position Du dann mit Left und Top änderst (dann brauchst Du Dich mit einem Canvas nicht herumschlagen, da die Komonenten automatisch gezeichnet werden)

-oder-

Du nimmst Dir irgendeine Komponente und zeichnest auf dessen Canvas zwei bunte Rechtecke (das ist etwas umständlicher, da Du diese Bereiche bei Verschiebungen löschen und versetzt neu zeichnen musst; auch das Steuern mit der Maus oder Tastatur ist etwas aufwendiger).

In BEIDEN Fällen kannst Du aber nicht automatisch prüfen, ob es Überschneidungen gibt. Du musst die 2 Bereiche in TRect-Variablen speichern (egal, was nun tatsächlich auf dem Bildschirm passiert) und kannst die zwei TRect auf Überscneidungen prüfen...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#25

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 18:47
Meinst Du, Du haste zwei Images oder Shapes oder ähnliches welche Du hin und her schubst, falls ja dann Posting #5, ansonsten versteht hier niemand was Du nicht verstehst.
Posting des Jahres Bummi, ich liebe Deinen Schreibstil einfach
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#26

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 18:57
ich liebe Deinen Schreibstil einfach
Auf einem Canvas.Rectangle sähe das aber bestimmt anders aus
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#27

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 21:10
Zitat:
Canvas.Rectangle
ein No-go in diesem Thread, da wird sicher noch jemand fragen wie man da Kollisionen erkennen kann...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#28

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 21:28
Hallo,

Google-Suche ist kaputt ?

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Steht doch alles schön da ...


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#29

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 13. Jan 2011, 21:34
wusst ich's doch
@hoika
Du hast den Threadverlauf nicht verfolgt,oder...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#30

AW: Überprüfen ob ein rectangle ein anderes überlappt

  Alt 14. Jan 2011, 11:51
Blöde frage ABER:

Code:
function RectInRect(const Rect1, Rect2: TRect): Boolean;
begin
  Result := (Rect1.Left >= Rect2.Left) and
            (Rect1.Right <= Rect2.Right) and
            (Rect1.Top >= Rect2.Top) and
            (Rect1.Bottom <= Rect2.Bottom);
end;
//oder
function OverlapRect(const Rect1, Rect2: TRect): Boolean;
begin
  Result := (Rect1.Left < Rect2.Right) and
            (Rect1.Right > Rect2.Left) and
            (Rect1.Top < Rect2.Bottom) and
            (Rect1.Bottom > Rect2.Top);
end;
Kann es nicht sein das obige funktionen beide nicht zum ziel führen? Die overlap zum beispiel erfordert doch das ALLE4 punkte des ersten im zweiten Rect liegen. Overlap heißt für mich aber auch das schon ein punkt im Anderen rechteck genügt o.O(ebend überlappend/überschneidend)

Korrektes Overlapping müsste doch so aussehen(oder nicht?):

Code:
function IsOverlapping(ARect1, ARect2: TRect): Boolean;
begin
  Result := NOT((ARect1.Left > ARect2.Right) OR (ARect1.Right < ARect2.Left) OR (ARect1.Top < ARect2.Bottom) OR (ARect1.Bottom > ARect2.Top));
end:
MFG
Memnarch
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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