Entwickler-Ecke

Multimedia / Grafik - Pixelausgabe einer bmp mit Scanline


ZUIO48 - Mo 16.09.02 15:48
Titel: Pixelausgabe einer bmp mit Scanline
Hallo, ich hab folgendes Problem: Die ausgegebenen Pixelwerte von scanline stimmen nicht mit denen von Canvas.Pixels überein:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var row : ^trgbtriple;
    i: Integer;
    Datei: File;
begin
 Image1.Picture.Bitmap.LoadFromFile('d:\windows\desktop\aaa.bmp');
 Image1.Picture.Bitmap.Pixelformat := pf24bit;
 row := Image1.Picture.Bitmap.Scanline[31];
 for i := 0 to 31 do begin
 ShowMessage(InttoHex(ColorToRgb(Image1.Canvas.Pixels[0,i]), 6));
 ShowMessage(inttostr(row^.rgbtred)+Inttostr(row^.rgbtgreen)+IntToStr(row^.rgbtblue));
 Inc(row);
 end;
end;


Wie geht das richtig mit scanline???

MfG jens


OregonGhost - So 22.09.02 11:58

Zwei Möglichkeiten, es andersherum zu machen:

  1. Im Speicher sind zumindest Win32-DIBs nicht RGB, sondern BGR.
  2. Die meisten DIBs sind standardmäßig bottom-top, also als erstes die untere Zeile, dann die zweitunterste etc.

Probier' beides mal aus.