[轉貼] 如何利用bcb擷取螢幕並存成*.bmp檔 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
作者:安安
資料來源:程式設計俱樂部
=====================================================
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 發送簡訊給我 |
|
bruce0211
版主 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
現學現賣 ... 參考以上資料所寫的函式 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 發送簡訊給我 |
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; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |