hallihallo ich bin es mal wieder^^
Also:
Ich habe momentan das Problem, das ich von einem ganz ganz großem Tbitmap ein Auschnitt von 0,0 bis X,Y kopieren möchte und in ein anderes Image einfügen.
mein Momentaner Code:
Delphi-Quellcode:
var bmp:Tbitmap;
X,Y,i,j:integer;
begin
bmp := Tbitmap.Create;
X := getmaxx(elements) + 50; // X festlegen
Y := getmaxY(elements) + 50;// Y festlegen
bmp.Width := X;// neue BMP initialisieren
bmp.Height := Y;
for i := 0 to X do// Pixelweise durchgehen
for j := 0 to Y do
bmp.Canvas.Pixels[i,j] := buffer.Canvas.Pixels[i,j];
// Buffer ist ein schon bestehendes Tbitmap Objekt
end;
nunja jetzt werdet ihr sagen
ahhh Pixelweiser Zugriff, wie langsam soll das denn noch werden, und ja das habe ich auch gemerkt^^
nun habe ich in meine Glaskugel geschaut und Scanline entdeckt, welches mir ja einen Pointer auf eine komplette Reihe zurückgibt.
so sweit so gut, aber zum Zuweisen dieser Reihe von 0 bis X auf mein neues Image müsste ich ja wieder über die Pixel eigenschaft gehen oder?
jedenfalls hackt es genau an dieser Stelle.
Wie kann ich bei Scanline nur einen Teil wieder zuweisen, ohne wieder über die Pixel Eigentschaft gehen zu müssen?
Idee:
Delphi-Quellcode:
type Pix = array[1..3] of byte;
var p:^Pix;
for i := 0 to y do
begin
p := buffer.scanline[i];
for j := 0 to x do
bmp.canvas.pixel[j,i] := p^[j]; // Hier muss ich doch wieder über Pixel gehen??
end;
Schonmal danke für Hilfe