Autor Beitrag
xorgol
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 02.06.09 17:27 
Ich versuche in mein Snakeprojekt Bitmaps einzufügen, um Schlange und Powerups einzufügen, jedoch weiß ich nicht wie ich diese genau einfüge.

Hier mal mein momentaner Image-Code ohne die Bitmaps:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure ZeichneElement(element: TElement; farbe: TColor);
var x, y : integer;
begin
  x:= (element.x-1) *15;
  y:= (element.y-1) *15;
  Form1.Image1.Canvas.Brush.Color:= farbe;
  Form1.Image1.Canvas.FillRect(Rect(x, y, x+15, y+15));

Die Prozedur hier zeichnet ein übergebenes Element 15x15-Pixel groß - das Image selbst ist 600x450 pix groß ... also 40x30 Felder für die Schlange.


Für jede Hilfe wie ich die Bitmaps integrier, bin ich sehr dankbar.

Moderiert von user profile iconNarses: Quote- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 02.06.2009 um 18:28
Tropby
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 71
Erhaltene Danke: 4

Vista, Win XP, Win 89
Turbo Delphi Ex.
BeitragVerfasst: Di 02.06.09 17:34 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure ZeichneElement(element: TElement; farbe: TColor);
var x, y : integer;
    bmp : TBitmap;
begin
  x:= (element.x - 1) *15;
  y:= (element.y - 1) *15;

  bmp := TBitmap.Create();
  bmp.loadfromfile('filename.bmp');

  Form1.Image1.Canvas.Brush.Color:= farbe;
  Form1.Image1.Canvas.Draw(x, y, bmp);

  bmp.free;

  {...}
end;


ausblenden Delphi-Quelltext
1:
  BitBlt(Form1.Image1.Canvas.Handle,   0,   0, bmp.width, bmp.Height, bmp.Canvas.Handle, 0, 0, SRCCOPY);					


Schneller als Canvas.Draw ist BitBlt. Außerdem ist es besser, wenn man die Bitmaps nicht jedes mal neu laden muss, das geht nur auf kosten der Perfomence.