Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Hilfe bei Rechnung für Iso-Engine (https://www.delphipraxis.net/48546-hilfe-bei-rechnung-fuer-iso-engine.html)

Yheeky 27. Jun 2005 02:25


Hilfe bei Rechnung für Iso-Engine
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,

ich bin gerade dabei eine Iso-Engine zu programmieren. Ich hab soweit die ersten Sachen erledigt. Nun geht´s ans Eingemachte. Ich habe euch ein Bild (Bild 1) zum Verständnis angehängt (bitte ansehen).

Dort erkennt ihr nun eine graue Fläche und weiße Rechtecke. Die grauen Tiles wurden genau in die weißen Rechtecke gezeichnet und dann nochmal mit halber Höhe und halber Breite versetzt gezeichnet. So entsteht der typische Iso-Effekt.

Die beiden Panels in der Leiste sagen folgendes aus: Das linke (8/0) zeigt die Mauskoordinaten (X/Y) bezüglich der Rechtecke an. Die rechte (4/2) die Pixelkoordinaten in diesem Rechteck.

Nun zu meiner Frage: Ich habe jetzt ein Tile (s.Bild 2). Diese hat wie ihr seht 4 Richtungen, in denen ja quasi kein Tile mehr ist (mit clFuchsia markiert). Wie kann ich nun per Code herausfinden, ob sich die Koordinaten auf dieser Fläche befinden?

Ich hoffe mir kann da jemand helfen. Danke.

Gruß Christian

marabu 27. Jun 2005 05:35

Re: Hilfe bei Rechnung für Iso-Engine
 
Hallo Christian,

wenn möglich würde ich einfach die Pixel-Farbe testen:

Delphi-Quellcode:
function MouseOnShape(canvas: TCanvas; x, y: integer; hitColor: TColor): boolean;
begin
  Result := Canvas.Pixels[x, y] = hitColor;
end;
Die Koordinaten müssen natürlich entsprechend transformiert sein und eventuell ist es günstiger mit einer missColor und der Umkehrung der Bedingung zu arbeiten.

Grüße vom marabu

Yheeky 27. Jun 2005 12:29

Re: Hilfe bei Rechnung für Iso-Engine
 
Hi Marabu,

diese Idee hatte ich auch, aber dies ist nicht möglich. Ich muss ja herausfinden, an welcher Seite des Tiles der Mauszeiger ist. Mir reicht ja leider nicht zu wissen, dass ich z.B. in dem Fuchsia farbenen Bereich bin. Ich muss ja noch wissen, ob links oben/unten oder rechts oben/unten. Weiss jemand wie ich das per Code herausfinden kann?

Gruß Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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