Autor Beitrag
ZUIO48
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 16.09.02 15:48 
Hallo, ich hab folgendes Problem: Die ausgegebenen Pixelwerte von scanline stimmen nicht mit denen von Canvas.Pixels überein:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: 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.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.