線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3941
推到 Plurk!
推到 Facebook!

[轉貼] 如何利用bcb擷取螢幕並存成*.bmp檔

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-17 16:02:32 IP:61.220.xxx.xxx 未訂閱
作者:安安 資料來源:程式設計俱樂部 ===================================================== HWND d; HDC dc; if((d=GetDesktopWindow())!=NULL) { dc=GetDC(d); BitBlt(Image1->Canvas->Handle,0,0,100,100,dc,0,0,SRCCOPY); ReleaseDC(d,dc); Image1->Picture->SaveToFile("c:\\sss.bmp"); }
michaelhuang3
一般會員


發表:13
回覆:11
積分:4
註冊:2003-07-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-03 09:56:55 IP:61.221.xxx.xxx 未訂閱
您好!關於您利用dc擷取視窗螢幕, 那想請教您,我用intel jpeg library把jpeg圖轉倒成bmp並至於記憶體中, 請問如何再以hDC將圖顯示在指定的視窗中. 可否麻煩您指點一下, 求知甚渴的新手請您幫忙, 謝謝
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-03 11:35:45 IP:211.21.xxx.xxx 未訂閱
現學現賣 ... 參考以上資料所寫的函式 for delphi     
//---------------------------------------------------------------------------
//將螢幕畫面存檔 _ScreenSave(檔名,存檔型態)
//檔名若為空字串 則自動給定流水號檔名
//存檔型態 0:bmp 1:jpg 
//---------------------------------------------------------------------------
procedure _ScreenSave(File_Name: String ; File_Type: integer);
var d:HWND;
    dc:HDC;
    jpg:TJPEGImage;
    bmp:TBitmap;
    my_filename:String;
begin      jpg := TJPEGImage.Create;
  bmp := TBitmap.Create;      bmp.Width:=Screen.width;
  bmp.Height:=Screen.height;      my_filename:=Trim(file_name);
  if my_filename='' then
     begin
       if File_Type=0 then
          my_filename:='c:\' FormatDateTime('mmdd_hhnnss_zzz',Now) '.bmp' //流水號檔名
       else
          my_filename:='c:\' FormatDateTime('mmdd_hhnnss_zzz',Now) '.jpg' //流水號檔名
     end;      d:=GetDesktopWindow();
  if (d<>0) then
     begin
       dc:=GetDC(d);
       BitBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,dc,0,0,SRCCOPY);
       ReleaseDC(d,dc);
       if File_Type=0 then
          begin
            bmp.SaveToFile(my_filename);
          end
       else
          begin
            jpg.Assign(bmp);
            jpg.SaveToFile(my_filename);
          end;        end;      jpg.Free;
  bmp.Free;
end; 
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-03 11:50:54 IP:211.21.xxx.xxx 未訂閱
BCB 版的 _ScreenSave() 函式
//---------------------------------------------------------------------------
void __fastcall TForm1::_ScreenSave(String File_Name , int File_Type)
{
  TJPEGImage *jpg = new TJPEGImage();
  Graphics::TBitmap *bmp = new Graphics::TBitmap();      bmp->Width=Screen->Width;
  bmp->Height=Screen->Height;      String my_filename;
  my_filename=Trim(File_Name);
  if (my_filename=="")
     {
       if (File_Type==0)
          my_filename="c:\\" FormatDateTime("mmdd_hhnnss_zzz",Now()) ".bmp"; //流水號檔名
       else
          my_filename="c:\\" FormatDateTime("mmdd_hhnnss_zzz",Now()) ".jpg"; //流水號檔名
     }      HWND d;
  HDC dc;
  if((d=GetDesktopWindow())!=NULL)
    {
      dc=GetDC(d);
      BitBlt(bmp->Canvas->Handle,0,0,bmp->Width,bmp->Height,dc,0,0,SRCCOPY);
      ReleaseDC(d,dc);
      if (File_Type==0)
          bmp->SaveToFile(my_filename);
      else
         {
           jpg->Assign(bmp);
           jpg->SaveToFile(my_filename);
         }
    }      delete jpg;
  delete bmp;
} 
系統時間:2024-11-22 21:47:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!