一个简单程序,有一个窗体,上面有一个按钮控件,一个image控件(实时显示摄像头监视到的情况)显示图像.
现在希望按下按钮就获取image控件中的内容.(即能实现局部截图).请各位兄台,帮忙想想办法.
在下QQ是:77181269

解决方案 »

  1.   

    截屏都是全屏的.如何只获取某一部份的图像呢,也就是我说的窗体上的image中的图像
      

  2.   

    copyrect,具体使用方法参考DELPHI的帮助。
      

  3.   

    大哥,能否提供更为详细的demo,对于图形图像处理实在不太懂!
      

  4.   

    你看DELPHI的帮助就可以了啊。很简单的。
      

  5.   

    问题终于解决了.
    原来的主要问题是无法获取窗体上的iamge控件的客户区域.后来在网络搜索"屏幕截图编程"找到了这个网址http://blog.csdn.net/luckyjan/archive/2004/11/02/163318.aspx
    该网址提供的资料挺好用的.呵呵..
      

  6.   

    其实一般的摄像头,用下面的方法就能实现了:
     myrect:=rect(0,0,360,480);
      bitmap:=Tbitmap.Create;
      bitmap.Height:=480;
      bitmap.Width:=360;
      bitmap.Canvas.CopyRect(myrect,image1.Canvas,myrect);
      ojpeg:=Tjpegimage.Create;
      ojpeg.Assign(bitmap);
      savepic:=TSavePictureDialog.Create(nil);
      savepic.Title:='保存照片';
      savepic.Filter:='照片文件|*.jpg';
      savepic.DefaultExt:='jpg';
      if savepic.Execute then
         ojpeg.SaveToFile(savepic.FileName);
      bitmap.Free;
      ojpeg.Free;
    但后来的用的是类似监控系统的摄像头(不好意思,都说不清楚是什么类型的摄像头),用以上的方法无法获取image中的图像.后来在网络上找到了解决方法.直接截取image控件中的图像
    CaptureControlImage(image1)function CaptureControlImage(Control:TControl):TBitmap;
    begin
      with Control do
        if Parent=nil then //无父窗体,根据它的位置,直接抓取
          result:=CaptureScreenRect(Bounds(left,top,width,height))
        else  //有父窗体,把它转化为相对于屏幕坐标,再 抓取
          with Parent.ClientToScreen(Point(Left,top))do 
            result:=CaptureScreenRect(Bounds(x,y,width,height));
    end;
    详细请参考网友网址:http://blog.csdn.net/luckyjan/archive/2004/11/02/163318.aspx