Thema: Delphi Denkfehler mit Scanline?

Einzelnen Beitrag anzeigen

Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#1

Denkfehler mit Scanline?

  Alt 31. Mär 2008, 21:50
Hi.
Erstmal tschuldigung für die schlechte Überschrift, wenn das Thema gelöst wird dann ändere ich sie eventuell.

Aber nun zum Problem, geht um folgenden Code:
Delphi-Quellcode:
type TRGBArray = array [0..100000000] of RGBQUAD;
     PRGBARRAY = ^TRGBArray;
             
var
  a,b: RGBQUAD;
  h,w: Integer;
  test,test2 : PRGBARRAY;

for h := 0 to 240 - 1 do
  begin
    test := form2.Image1.picture.bitmap.ScanLine[h];
    test2 := form3.imgBuffer.Picture.Bitmap.ScanLine[h];
    for w := 0 to 320 - 1 do
      begin
        a := test^[w];
        b := test2^[w];
        a := b;
        if form3.netz.input[(h*320)+w].nettoinput <> 0 then
          a.rgbRed := $FF;
        test^[w] := a;
      end;
  end;
form2.image1.Invalidate;
Der Code kopiert praktisch ein Bild auf ein anderes. Klar, dass geht eleganter. Es geht aber ums Prinzip.
Zusätzlich zum kopieren wird jeder Pixel je nach Arrayeintrag gefärbt. Allerdings kommt dann sowas wie im Anhang raus.
Pixelformat vom Zielbild ist 32 Bit, die Quelle ist via Callback über die Webcam gecaptured.
Weiß jemand, was ich falsch mache? Wieso funktioniert das eigentliche kopieren, nur das Rot machen geht nicht?
Achso, je weiter ich den Stift nach links bewege, desto mehr deckt sich der rote Bereich mit dem Stift o_O

DANKE,
lg Flips

Ps: Das geht glaub auch mit einer Schleife, hat jemand den passenden Code mit einer Schleife?
Miniaturansicht angehängter Grafiken
so_siehts_aus_117.png  
Philipp F.
  Mit Zitat antworten Zitat