Hi,
das is dahier hab ich zum testen benutzt was schneller ist... (siehe anderes Topic im Freeware Bereich):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.BitBtn1Click(Sender: TObject); var x, y: Integer; bit: TBitmap; P: PByteArray; begin Bit:=TBitmap.Create; Bit.PixelFormat:=pf24Bit; Bit.Width:=Image.Width; Bit.Height:=Image.Height; for y:=0 to Bit.Height-1 do begin P:=Bit.ScanLine[y]; for x:=0 to Bit.Width-1 do begin P^[x*3]:=255; // Blau P^[x*3+1]:=0; // Rot P^[x*3+2]:=0; // Grün end; end; Image.Canvas.Draw(0,0,Bit); Bit.Free; end; |
in P wird die Scanline für jede Horrizontale Linie des Bitmaps gespeichert, in der 2ten For-Schleife wird dann jedem einzelnen Wert in diesem Array ein wert zugewiesen.
x*3 daher, weil es ja 3 Werte sind, R, G und B...
Hoffe das hat dir geholfen.
Au'revoir,
Aya