全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:994
推到 Plurk!
推到 Facebook!

如何擷取程式中某個元件的圖片

答題得分者是:RaynorPao
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-17 00:57:11 IP:211.76.xxx.xxx 未訂閱
我參考RaynorPao大大的作品
   AnsiString szCommand=AThread->Connection->ReadLn();
   if(szCommand=="ServerToClient")
   {
      Graphics::TBitmap *bmp1=new Graphics::TBitmap;
      TMemoryStream *ms1=new TMemoryStream;
      try
      {
         CURSORINFO ci;
         ci.cbSize=sizeof(CURSORINFO);
         GetCursorInfo(&ci);
         POINT pt;
         GetCursorPos(&pt);             ms1->Size=0;
         HDC dc;
         TCanvas *cs=new TCanvas;
         dc=GetDC(0);
         cs->Handle=dc;
         bmp1->Width=VideoGrabber1->Width;
         bmp1->Height=VideoGrabber1->Height;
         bmp1->Canvas->CopyRect(Rect(0, 0, bmp1->Width, bmp1->Height), cs,
            Rect(Form1->Left, Form1->Top, Screen->Width, Screen->Height));
         DrawIcon(bmp1->Canvas->Handle, pt.x, pt.y, ci.hCursor);             TJPEGImage *jpg=new TJPEGImage;
         jpg->Assign(bmp1);
         jpg->CompressionQuality=20;
         jpg->Compress();
         jpg->SaveToStream(ms1);             delete jpg;
         delete cs;
         ReleaseDC(NULL, dc);             AThread->Connection->WriteStream(ms1, true, true, 0);
      }
      __finally
      {
         delete ms1;
         delete bmp1;
      }
   }    
這是用來傳送桌面的圖片,但是我只想傳送程式中Memo的畫面,請問一下該如何修改謝謝了
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-17 10:04:36 IP:61.221.xxx.xxx 未訂閱
引言: 我參考RaynorPao大大的作品
   AnsiString szCommand=AThread->Connection->ReadLn();
   if(szCommand=="ServerToClient")
   {
      Graphics::TBitmap *bmp1=new Graphics::TBitmap;
      TMemoryStream *ms1=new TMemoryStream;
      try
      {
         CURSORINFO ci;
         ci.cbSize=sizeof(CURSORINFO);
         GetCursorInfo(&ci);
         POINT pt;
         GetCursorPos(&pt);             ms1->Size=0;
         HDC dc;
         TCanvas *cs=new TCanvas;
         dc=GetDC(0);
         cs->Handle=dc;
         bmp1->Width=VideoGrabber1->Width;
         bmp1->Height=VideoGrabber1->Height;
         bmp1->Canvas->CopyRect(Rect(0, 0, bmp1->Width, bmp1->Height), cs,
            Rect(Form1->Left, Form1->Top, Screen->Width, Screen->Height));
         DrawIcon(bmp1->Canvas->Handle, pt.x, pt.y, ci.hCursor);             TJPEGImage *jpg=new TJPEGImage;
         jpg->Assign(bmp1);
         jpg->CompressionQuality=20;
         jpg->Compress();
         jpg->SaveToStream(ms1);             delete jpg;
         delete cs;
         ReleaseDC(NULL, dc);             AThread->Connection->WriteStream(ms1, true, true, 0);
      }
      __finally
      {
         delete ms1;
         delete bmp1;
      }
   }    
這是用來傳送桌面的圖片,但是我只想傳送程式中Memo的畫面,請問一下該如何修改謝謝了 < face="Verdana, Arial, Helvetica">
GGL 你好:
(1)如果你想改成只傳送 Memo1 的畫面的話,那麼只需要把截取的部分改掉,應
   該就可以了,例如:
   >>>>>>>>>>>>>>>>> >
    < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --    發表人 - RaynorPao 於 2004/07/17  10:07:15
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-17 11:31:26 IP:211.76.xxx.xxx 未訂閱
謝謝RaynorPao 原來我只要改dc=GetDC(Memo1->Handle);就可以了,因為我去help看了GetDC()的說明沒看清楚不知道裡面的參數可以放handle... 謝謝了
系統時間:2024-05-21 1:04:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!