Vielen Dank so weit. Das Bild sieht schon mehr oder weniger so aus wie es soll. Aber die einzelnen Pixel scheinen jeweils um ein Paar Positionen verschoben zu sein.
Delphi-Quellcode:
PictureWidth := 5;
PictureHeight := 7;
PixelBytes := 'FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF'
^^ so sieht die Situation beispielsweise aus bevor das Bild aufgebaut wird. In PixelBytes sind 35 Pixel gespeichert, welche ein 7x5 Pixel grosses Bild mit einem Schachbrettmuster ergäben. Die Bytes in PixelBytes sind so angeordnet, dass das erste den oberen rechten Pixel des Bildes und das letzte den Pixel unten Links im Bild darstellen. Mit dem nachfolgenden Code wird nun von hinten her jedes Pixel geschrieben:
Delphi-Quellcode:
for k := 0 to PictureHeight - 1 do
begin
Pixel := Picture.ScanLine[k];
for l := 0 to PictureWidth - 1 do // row manipulation
begin
with Picture do
begin
Color := HexStrToInt(Copy(PixelBytes, Length(PixelBytes) - 1, 2));
if Color = 255 then Color := 125; // nur damit ich weisse Pixel auch sehe
Pixel^.rgbtRed := Color;
Pixel^.rgbtGreen := Color;
Pixel^.rgbtBlue := Color;
PixelBytes := Copy(PixelBytes, 0, Length(PixelBytes) - 2);
Inc(Pixel);
end;
end;
end;
Picture.SaveToFile(IntToStr(k) + '.bmp');
Nun erwarte ich eigentlich nach dem speichern des Bildes, dass dieses in etwa so aussieht (x = weiss, - = schwarz):
x-x-x-x
-x-x-x-
x-x-x-x
-x-x-x-
x-x-x-x
-x-x-x-
x-x-x-x
Heraus kommt aber folgendes:
x---x
-xxx-
x---x
-xxx-
x---x
-xxx-
---xx
Und das gefällt mir nicht.