Einzelnen Beitrag anzeigen

hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Bild Pixel für Pixel / Byte für Byte "zeichnen"

  Alt 26. Jan 2007, 12:33
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.
inde deus abest
  Mit Zitat antworten Zitat