写成你的代码:
  Bitmap:=TBitmap.Create;
  Bitmap.PixelFormat:=pf24Bit;
  Bitmap.Handle:=BHandle;
  //Bitmap.PixelFormat:=pf8bit;
  BitMap.SaveToStream(BmpStream);
  BmpStream.Position:=0;
  LeftSize:=BmpStream.Size;
  ....
  jpg := TJPEGImage.Create;
  Jpg.assign(bitmap);
  jpg.SaveToFile('temp.jpg');//就是jpg格式
  jpg.Free;
  Bitmap.Free;
  
2.
  image1.Picture.LoadFromFile('temp.jpg')别忘了加入jpeg单元

解决方案 »

  1.   

    昨天晚上我自己试了一下,procedure ScreenCap(LeftPos,TopPos,
    RightPos,BottomPos:integer);
    var
      RectWidth,RectHeight:integer;
      SourceDC,DestDC,Bhandle:integer;
      Bitmap:TBitmap;
      jpg1,Jpg:TJpegImage;
    begin
      RectWidth:=RightPos-LeftPos;
      RectHeight:=BottomPos-TopPos;
      SourceDC:=CreateDC('DISPLAY','','',nil);
      DestDC:=CreateCompatibleDC(SourceDC);
      Bhandle:=CreateCompatibleBitmap(SourceDC,
    RectWidth,RectHeight);
      SelectObject(DestDC,Bhandle);
      BitBlt(DestDC,0,0,RectWidth,RectHeight,SourceDC,
    LeftPos,TopPos,SRCCOPY);
      Bitmap:=TBitmap.Create;
      Bitmap.Handle:=BHandle;  jpg:=TJpegImage.Create;
      jpg1:=TJpegImage.Create;
      jpg1.Assign(BitMap);
      jpg1.SaveToFile('c:\2211.jpg');
      jpg.LoadFromFile('c:\2211.jpg');
      jpg.SaveToStream(BmpStream);
      
      BmpStream.Position:=0;
      LeftSize:=BmpStream.Size;
      Bitmap.Free;
      Jpg.Free;
      jpg1.Free;
      DeleteDC(DestDC);
      ReleaseDC(Bhandle,SourceDC);
    end;这样抓到的图象是空的,2211.jpg文件是0K
      

  2.   

    jpg1.SaveToFile('c:\2211.jpg');
    这里存为文件的时候可以指定分辨率吗?
      

  3.   

    type TJPEGPixelFormat = (jf24Bit, jf8Bit);
    property PixelFormat: TJPEGPixelFormat;}自己看DEMO,写的很好。Borland\delphi5\help\examples\jpeg