BCB屏幕截图(抓图)程序-转

1、屏幕截图

  void   __fastcall   TmainForm::N31Click(TObject   *Sender)                                                                                                                         

  {

    Graphics::TBitmap   *scrBitmap=new   Graphics::TBitmap();

    scrBitmap->Width=Screen->Width;

    scrBitmap->Height=Screen->Height;

    HDC   hdc=GetWindowDC(0);

    BitBlt(scrBitmap->Canvas->Handle,0,0,scrBitmap->Width,scrBitmap->Height,hdc,0,0,SRCCOPY);

    scrBitmap->SaveToFile(".\\screen\\screen.bmp");

    delete   scrBitmap;

  }

  //---------------------------------------------------------------------------

2、工作区截图

  void   __fastcall   TmainForm::N32Click(TObject   *Sender)

  {

    Graphics::TBitmap   *scrBitmap=new   Graphics::TBitmap();

    scrBitmap->Width=mainForm->Width;

    scrBitmap->Height=mainForm->Height;

    HDC   hdc=GetWindowDC(0);

    BitBlt(scrBitmap->Canvas->Handle,0,0,scrBitmap->Width,scrBitmap->Height,hdc,mainForm->Left,mainForm->Top,SRCCOPY);

    scrBitmap->SaveToFile(".\\screen\\screen1.bmp");

    delete   scrBitmap;

  }

Top

3、远程截取和发送的代码,如果只是本地的,可以直接用savetofile就可以了.

  if(CanCapture)

  {

                  CanCapture=false;

                  HDC   SourceDC,DestDC,Bhandle;

                  Bitmap->Width=Screen->Width;

                  Bitmap->Height=Screen->Height;

                  SourceDC=CreateDC("DISPLAY",NULL,NULL,NULL);

                  StretchBlt(Bitmap->Canvas->Handle,0,0,Bitmap->Width,Bitmap->Height,SourceDC,0,0,Screen->Width,Screen->Height,SRCCOPY);

                  //changetojpg-------------------------------------------

                  jpeg->PixelFormat=jf24Bit;                           //或jf8Bit

                  jpeg->CompressionQuality=Pix;               //1-100

                  jpeg->Assign((TPersistent*)Bitmap);

                  jpeg->Compress();

                  Stream->Clear();

                  jpeg->SaveToStream(Stream);

                  //send   picture----------------------------------------

                  const   int   ThreshHold=2048;

                  Stream->Position=0;

                  char   *Buffer=new   char[ThreshHold];

                  int   BuffSize=Stream->Size;

                  int   Buffers=BuffSize/ThreshHold;

                  for(int   i=0;i<=Buffers;i++)

                  {

                    if(BuffSize>=ThreshHold)

                                  {

                                    Stream->Read(Buffer,ThreshHold);

                                    NMUDP1->SendBuffer(Buffer,ThreshHold,ThreshHold);

                                  }

                    else

                                  {

                                  if(BuffSize<=0)

                                                  break;

                                  else

                                                  {

                                                  Stream->Read(Buffer,BuffSize);

                                                  NMUDP1->SendBuffer(Buffer,BuffSize,BuffSize);

                                                  }

                                  }

                  BuffSize-=ThreshHold;

                  }

                  NMUDP1->SendBuffer("E",1,1);

                  delete   Buffer;

                  CanCapture=true;

  }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值