Thema: Delphi Denkfehler mit Scanline?

Einzelnen Beitrag anzeigen

Flips

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

Re: Denkfehler mit Scanline?

  Alt 3. Apr 2008, 14:49
Also ich verstehs echt nicht...
Habs jetzt mal wie jfheins gemacht:
Delphi-Quellcode:
form2.Image1.Picture.Bitmap.PixelFormat := APixelFormat; //-> pf32Bit
for h := 0 to 240 - 1 do
  begin
    a := form2.Image1.picture.bitmap.ScanLine[h];
    b := form3.imgBuffer.Picture.Bitmap.ScanLine[h];
    for w := 0 to 320 - 1 do
      begin
        a^ := b^;
        if form3.netz.input[(h*320)+w].nettoinput <> 0 then
          a^.rgbRed := $FF;
        inc(a);
        inc(b);
      end;
  end;
--> Selbes Ergebnis

Achso die Funktion, die mir das Bild captured sieht so aus, vielleicht bringt das ja was:
Codierung nennt sich I420.
Delphi-Quellcode:
function FrameCallbackFunction(AHandle : hWnd; VIDEOHDR : TVideoHDRPtr): bool; stdcall;
var I : integer;
  BitmapInfo: TBitmapInfo;
begin
  result := true;
  if not grab then
    Exit;
  FillChar(BitmapInfo, SizeOf(BitmapInfo), 0);
  SendMessage(capHandle, WM_CAP_GET_VIDEOFORMAT, SizeOf(BitmapInfo), Integer(@BitmapInfo));
  ConvertCodecToRGB(BICompressionToVideoCodec(bitmapinfo.bmiHeader.biCompression), VideoHDR^.lpData, @Buf2,320, 240);
  for I := 1 to 240 do
    Buf1[I] := Buf2[240 -(I-1)];
  SetBitmapBits(bmpBuffer.Handle,320*240*SizeOf(DWord),@Buf1);
  grab := false;
end;
Es gibt noch ne RGB24 Codierung, allerdings weiß ich nicht was ich dazu in die Callback-Function schreiben muss.
Philipp F.
  Mit Zitat antworten Zitat