我把1024*768的屏幕图像抓取到一个bitmap1中(非磁盘文件),然后我想把这个bitmap1的缩略图拷贝到bitmap2中,bitmap2的大小是160*120,请问我应该怎样实现?

解决方案 »

  1.   

    将一bmp图形缩小,图形可能变得不可辨认或是血肉模糊,
    怎么样才能避免这样呢,以下是我的心得:procedure ZoomBmp(imagen: TBitmap; dWidth, dHeight: Integer; var des: TBitmap);
    var
      ori: TBitmap;
      dispositivo_o, dispositivo_d: HDC;
      pepito: HBitmap;
    begin
      ori := Tbitmap.Create;
      des := TBItmap.Create;
      ori.handle := imagen.handle;
      des.width := dWidth;
      des.height := dHeight;
      dispositivo_o := CreateCompatibleDC(0);
      dispositivo_d := CreateCompatibleDC(0);
      SelectObject(dispositivo_o, ori.handle);
      pepito := SelectObject(dispositivo_d, des.handle);
      SetStretchBltMode(dispositivo_d,  STRETCH_HALFTONE);
      StretchBlt(dispositivo_d, 0, 0, dWidth, dHeight, dispositivo_o, 0, 0, ori.width, ori.height, SRCCOPY);
      SelectObject(dispositivo_d, pepito);
      ori.Free;
      DeleteObject(pepito);
     DeleteDC(dispositivo_o);
     DeleteDC(dispositivo_d);
    end;
      

  2.   

    其实最重要的就是这句:
    SetStretchBltMode(dispositivo_d,  STRETCH_HALFTONE);
      

  3.   

    我并不是要把bitmap2显示出来,而是要把它通过udp组件发送到服务器上!如果是这样的话应该怎么做?
      

  4.   

    为什么不转成JPG的,如果象你那样的缩小,画质损失很大
      

  5.   

    直接调用STRECHDRAW在压缩比较大时,失真很大,可以用线性插值法来压缩,失真会小很多