Entwickler-Ecke

Multimedia / Grafik - Image list probleme


Beni92 - Do 30.04.09 14:29
Titel: Image list probleme
Ich bin gerade dabei ein snake spiel zu programmieren und bin eigentlich schon fast fertig ich habe nur ein problem:

Ich habe eine image list in der es zwei verschieden bilder gibt(den kopf und den körper) das bild vom körper kommt so oft vor wie lang gerade die schlange ist. Wenn ich jetz um eine ecke fahre und ich will das sich ein teil dreht, drehen sich alle restlichen körper teile mit. Bei dem Kopf funtzt es, daher das bild nur einemal in der image list vorhanden ist.

ich danke euch im voraus für eine schnelle antwort


Kha - Do 30.04.09 15:05

:welcome:

Du darfst natürlich nicht das Bild in der Liste drehen, sondern musst während des Zeichnens auf die Form/ImageBox/... erledigen. Je nachdem, mit welchem Code du bisher zeichnest und drehst, könnte das so oder so aussehen ;) .
Im Notfall könntest du auch das Bild temporär in ein neues Bitmap kopieren und dort dann drehen, sollte aber auch direkt funktionieren.


Beni92 - Do 30.04.09 15:25

so in etwa?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
if (haha > 0)
{
   Image bild = schräg[haha];

   bild.RotateFlip(RotateFlipType.Rotate270FlipNone);

   schräg.RemoveAt(haha);
   schräg.Insert(haha, bild);
}


schräg ist die image list. im index 0 ist der kopf, haha ist die position in der image list in welcher sich das bild drehen soll.


Kha - Do 30.04.09 15:49

user profile iconBeni92 hat folgendes geschrieben Zum zitierten Posting springen:
schräg ist die image list.
Äh... gut zu wissen ;) .

Wie zeichnest du denn nun? Eine Kopie legst du jedenfalls über den Bitmap-Konstruktor, der ein Image entgegennimmt, an. Und das Remove/Insert brauchst du nicht, du willst doch schließlich das Original behalten.


Beni92 - Do 30.04.09 16:04


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
private void Form1_Paint(object sender, PaintEventArgs e)
{
  for (int i = 0; i < schlangenpos.Count; i++)
  {
    Point p = schlangenpos[i];
                
                
    e.Graphics.DrawImage(schräg[i], p.X, p.Y);
                

                
  }
  e.Graphics.DrawImage(schaf, x, y);

}


schaf ist das opfer also zu ignoriren

schlangenpos sind die punkte der schlange in einer point list


Beni92 - Do 30.04.09 17:01

danke habe das proble gelöst

das mit dem bitmap konstruktor hat funktioniert