2013-04-13 64 views
-1

我用這個代碼做一個截圖:德爾福 - 截圖質量

function GetScreenShot: TBitmap; 
var 
    Desktop: HDC; 
begin 
    Result := TBitmap.Create; 
    Desktop := GetDC(0); 
    try 
    try 
     Result.PixelFormat := pf32bit; 
     Result.Width := Screen.Width; 
     Result.Height := Screen.Height; 
     BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, 
     Desktop, 0, 0, SRCCOPY); 
     Result.Modified := True; 
    finally 
     ReleaseDC(0, Desktop); 
    end; 
    except 
    Result.Free; 
    Result := nil; 
    end; 
end; 


procedure TForm1.Button1Click(Sender: TObject); 
begin 
    Image1.Picture.Bitmap := GetScreenShot; 
end; 

現在我要問我如何改變質量。例如,我可以選擇25%,50%,75%和100%。

我怎麼能實現這個到我的代碼?

+0

你在你的代碼中的內存泄漏。您的函數中的TBitmap將永遠不會被釋放 –

+4

泄漏位於'Button1Click'而不是'GetScreenShot',FWIW。 –

+0

我一直都是通過JPEG壓縮來完成這個工作的。 1)將屏幕快照爲BMP,2)將BMP分配給JPG對象,3)壓縮JPG對象。 –

回答

5

不能指定大小或採取截圖的質量,但你可以自己以後換一個,例如看看這個代碼:http://www.tek-tips.com/faqs.cfm?fid=7481

+4

除了鏈接的示例之外:使用HALFTONE設置SetStretchBltMode可能很有用 – MBo

+0

如果您鏈接的外部網站由於某種原因可用,則此答案變得毫無意義;這就是爲什麼我們一般不會在這裏接受他們。答案應該包含足夠的內容以獨立存在,並將任何鏈接添加爲其他參考。這是一個例外,當你連接到其中一個主要網站時(比如微軟),應該有關於鏈接引用的完整解釋。 –

+0

@DannyRancher這個例子不是關於鏈接的,而是關於你必須自己調整它的想法。 – Andrey