Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Was geht schneller bei zufälligen zugriff auf Farbwerte?

  Alt 27. Apr 2008, 13:00
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat