Hallo,
Zitat von
griever:
heist das ich brauch nur einmal scanline machen und das resultat dann um eins erhöhen um in die nächste zeile zu kommen?
fast. Du musst natürlich sämtliche Pixel der aktuellen Zeile überspringen, um in die nächste Zeile zu kommen.
Du musst aber zwei Dinge beachten:
Erstens stehen Bitmaps normalerweise auf dem Kopf, d. h. Der Pointer auf die letzte Zeile ist der Startpunkt der Bilddaten.
Zweitens ist eine Bildschirmzeile immer durch vier teilbar. Hat Dein Bild also drei Pixel und eine Farbtiefe von 24Bit, dann hat jede Zeile 9 Byte Pixeldaten und am Ende drei Byte Fülldaten. Wenn Du mit 32Bit arbeitest, hast Du natürlich keine Probleme.
Ein Beispiel (32 Bit):
Delphi-Quellcode:
Bit := TBitmap.Create;
Bit.Width := 30;
Bit.Height := 20;
P := Bit.ScanLine[Bit.Height - 1];
// Pixel an 10, 5 holen:
R := P[10 * 4 + (5 * 30 * 4)];
G := P[10 * 4 + (5 * 30 * 4) + 1];
B := P[10 * 4 + (5 * 30 * 4) + 2];
Gruß
xaromz