如何象QQ一样截取屏幕任意矩形区域的图像并保存为jpg文件

解决方案 »

  1.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
     Fullscreen:Tbitmap;
     FullscreenCanvas:TCanvas;
     dc:HDC;
    begin
        timer1.Enabled:=false;   //取消时钟
        Fullscreen := TBitmap.Create;      //创建一个BITMAP来存放图象
        Fullscreen.Width := image1.Width;
        Fullscreen.Height := image1.Height;
        DC := GetDC (0);   //取得屏幕的 DC,参数0指的是屏幕
        FullscreenCanvas := TCanvas.Create; //创建一个CANVAS对象
        FullscreenCanvas.Handle := DC;
    Fullscreen.Canvas.CopyRect 
    (Rect (0, 0, image1.Width, image1.Height), fullscreenCanvas,
    Rect (left,top,Width,Height));      //Rect (left,top,Width,Height)为要截取的矩形
        FullscreenCanvas.Free;          //释放CANVAS对象
        ReleaseDC (0, DC);              //释放DC
        image1.picture.Bitmap:=fullscreen;//拷贝下的图象赋给IMAGE对象
        fullscreen.free;                //释放bitmap
    end;
      

  2.   

    用楼上的吧....
    裁屏的代码在baidu里面一找到处都是
      

  3.   

    有没有办法把QQ的自定义截功能分离出来,那就想要那样的,自定义矩形选择后就可以保存为JPG文件?
      

  4.   

    image控件本身就有把图片保存成文件的方法
      

  5.   

    http://blog.csdn.net/laviewpbt/archive/2006/11/07/1370783.aspx
      

  6.   

    我正好有这个功能,在QQ下找到CameraDll.dll这个文件Function CameraSubArea:Integer; external 'CameraBMP.dll' name 'CameraSubArea';
    Function CameraWindow:Integer; external 'CameraBMP.dll' name 'CameraWindow';
    Function CameraWindowLikeSpy:Integer; external 'CameraBMP.dll' name 'CameraWindowLikeSpy';调用
    if CameraSubArea=1 then
    begin
      图片保存在剪贴板里了,是bmp格式,粘贴出来转成jpg就OK了
    end;调用时会显示QQ的那个图片。使用资源管理的工具软件替换掉就OK了
      

  7.   

    To haoqingqlm ,
    谢谢啦。回去试试。
      

  8.   

    我用delphi写的你看看,给你点灵感http://www.dj9158.com/ShowFileData.aspx?ID=269