Das komische dabei, wen ich die Zeile mit Canvas.Pixel in FormCreate entferne, dann bleibt die Bitmap schwarz.
Wieso ?
In DrawMauer steht auch nichts anderes als Pixels[?, ?].
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
const
size = 1024;
begin
BitTextur := TBitmap.Create;
with BitTextur do begin
PixelFormat := pf32bit;
Width := size;
Height := size;
Canvas.Pixels[0, 0] := 0; // ohne dies geht es nicht
DrawMauer(Canvas);
SaveToFile('test.bmp');
end;
end;
// Zeichne Mauer
procedure TForm1.DrawMauer(c: TCanvas);
const
size = 16;
var
x, y: integer;
begin
for y := 0 to c.Height do begin
for x := 0 to c.Width do begin
if ((x mod (size * 2) = 0) and (y div (size) mod 2 = 0)) or
(((x + size) mod (size * 2) = 0) and (y div (size) mod 2 = 1)) or
(y mod size = 0) then begin
c.Pixels[x, y] := clRed;
end else begin
c.Pixels[x, y] := clYellow;
end;
end;
end;
end;
Noch was:
Mit folgendem Code, wird die Mauer wunderbar ausgegeben.
Entferne ich aber LoadFromFile, dann habe ich keine Ausgabe.
Code: Alles auswählen
procedure TForm1.FormPaint(Sender: TObject);
begin
BitTextur.LoadFromFile('test.bmp');
Canvas.Draw(0, 0, BitTextur);
end;
Wen ich in FormCreate
Code: Alles auswählen
PixelFormat := pf24bit;