Thema: Delphi Scanline vs. Pixels

Einzelnen Beitrag anzeigen

Noobinator

Registriert seit: 9. Mai 2006
147 Beiträge
 
Delphi 7 Personal
 
#1

Scanline vs. Pixels

  Alt 1. Feb 2008, 18:01
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
  Mit Zitat antworten Zitat