Entwickler-Ecke

Multimedia / Grafik - BitMap Informationen auslesen


knittel - Mo 13.09.10 13:31
Titel: BitMap Informationen auslesen
Hallo Leute,
Ich entwickle gerade ein Spiel und dabei soll man auf einem Hintergrundbild spielen. Zusätzlich zu dem Hintergrundbild will ich noch ein Schwarz-Weiß BitMap erstellen, um zuspeichern auf welchen Flächen man gehen kann. Jetzt die Frage:
1. Wie kann ich die BitMap einlesen?
2. Wie schaffe ich es die Koordinaten der BMP auszulesen.

Außerdem muss ich sehr viele Kollisionen abfragen. Bisher würde ich das so machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
for i:=0 To High(Einheiten) do //
begin
  for j:=0 To High(Schüsse) do
  begin
    // Ich weis die Kollisons-Abfrage ist weder Pixel-genau noch rechteckig.
    Abstand := sqrt(Einheit[i].x - Schuss[j].x + Einheit[i].y - Schuss[j].y);
    if (Abstand < Einheitsize/2then
    begin
      # kollision
    end;
  end;
end;

Bei der Kollisionsabfrage würden mich noch 2 Sachen interessieren:
1. Dauert die sqrt Rechnung sehr lange? Sollte ich die Wurzelziehung einfach weglassen?
2. Gibt es noch eine einfacherer Kollisionsabfrage (Mir reicht ein grober Kollisions-Check nicht pixelgenau)?

Danke schonmal im voraus. :)


platzwart - Mo 13.09.10 13:37

1. Wie kann ich die BitMap einlesen?

Delphi-Quelltext
1:
Image1.Picture.LoadFromFile('C:\meine_bitmap.bmp');                    


2. Wie schaffe ich es die Koordinaten der BMP auszulesen.

Delphi-Quelltext
1:
Image1.Canvas.pixels[4,3]:= ClBlack; // Pixel in fünfter Spalte, vierte Zeile auf schwarz setzen                    



Weiß aber nicht genau, ob ich deine Fragen richtig verstanden habe ;)


knittel - Mo 13.09.10 19:54

Du hast die fragen richtig verstanden.
also vielen dank.

:)


knittel - Fr 22.10.10 17:38

Ich hätte noch einmal eine Frage zum selben Thema:

Ich habe immernoch ein Schwarz-Weiß BitMap und ich will eine Überprüfung machen ob innerhalb eines bestimmten Bereich (Rechteck) irgendein Punkt Schwarz ist. Nun will ich keine For-Schleifen machen die das überprüfen, diese Überprüfung würde glaube ich relativ lange dauern. Deswegen wollte ich wissen ob es dafür einen einfach und intelligenteren Weg gibt.

Danke im voraus.


Martok - Fr 22.10.10 17:42

Hallo,

bitte erstelle für neue Fragen ein neues Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt. Daher:

*geschlossen*


Viele Grüße,
Martok