看上去象是将一段内存恢复到bitmap当中。对于Delphi也许比这个操作更为简单,那就是利用TBitmap类型,或许可以通过LoadFromStream一类的进行操作。

解决方案 »

  1.   

    好像是以扫描线的形式把_getChangesBuffer这段内存里存的图像,写到开始初始化的bitmap里。
    GetChangesBuffer 应该是个结构体,按同样声明在delphi同样声明一个结构体。然后就是delphi的内存操作,不比C#复杂。
      

  2.   


    var
    m_BackBm :TBitmap;
    procedure TForm1.GrabImageDirect(const R: TRect);
    var
      ImgLine0: PChar;
      DstStride: integer;
      
    begin
    // NOTE: negative stride because DstStride bottom-up (std windows bitmap)
      ImgLine0 := PChar(m_BackBm.ScanLine[0]);
      DstStride := -ScaleByPixformat(m_BackBm.Width, m_BackBm.PixelFormat);
    //  ImgLine0 := PChar(m_BackBm.ScanLine[m_BackBm.Height-1]);
    //  DstStride := ScaleByPixformat(m_BackBm.Width, m_BackBm.PixelFormat);
      vd.CaptureRect(R, DstStride, ImgLine0);
      image1.Picture.Assign(m_BackBm);
    end;// levk 2006.05.19: created
    procedure TForm1.GrabImageFullscreen;
    var
      R: TRect;
    begin
      R := Rect(0, 0, m_BackBm.Width, m_BackBm.Height);
    //GrabImageFromDc(R);
      GrabImageDirect(R);
    end;不知道跟C#的是否对应