我試圖做使用代碼的屏幕截圖如下的屏幕捕捉
Dim area As Rectangle = FormPrintArea.Bounds
Dim areaWidth As Integer = CInt(area.Width * ScaleFactor)
Dim areaHeight As Integer = CInt(area.Height * ScaleFactor)
Dim capture As Bitmap = New Bitmap(areaWidth, areaHeight, PixelFormat.Format32bppArgb)
Dim graph As Graphics = Graphics.FromImage(capture)
Dim ScaledSize As New Size With {
.Height = areaHeight,
.Width = areaWidth
}
graph.CopyFromScreen(area.X, area.Y, 0, 0, ScaledSize, CopyPixelOperation.SourceCopy)
PictureBox1.Image = capture
`` 問題是我無法找到比例因子VB規模形式,一切都運行完美,只要「更改文本,應用程序和其他項目的大小:100%「,但如果它設置的不同,如125%(建議),則會丟失大約20%的圖像。它看起來像LanguageFont類中有一個ScaleFactor,但我似乎無法從VB(或C#)訪問它。
該應用程序具有用戶用來定義打印區域的VB Form(FormPrintArea)。如果我在設置爲125%(建議)的系統上將ScaleFactor設置爲1.25,則一切正常。有沒有什麼辦法通過API從Windows獲取價值?
什麼是ScaleFactor?爲什麼你需要它?你可以發佈圖片進行比較嗎? –
在Windows 10中,自定義您的顯示器,第一個設置允許用戶製作更大或更小的東西(文本,應用程序和其他項目)。在高清顯示器(1920x1024)上,默認值爲125%。在上面的代碼中,如果設置爲100%,則應用程序可以正常工作,FormPrintArea的大小= Graphics.FromImage(capture)捕獲的內容。如果將此值設置爲其他值(默認值爲125%),則捕獲的屏幕更少,如果將ScaleFactor設置爲1.25,則所有內容都可以正確捕獲。我想要的是通過API從Windows獲取此值(ScaleFactor)。 –
在上面的兩張照片FormPrintArea的形式沒有改變大小或移動。在屏幕上可視化看起來像第二個圖像,當ScaleFactor = 1時將顯示設置設置爲125%時,您會看到第一個圖像。將顯示設置設置爲100%並且ScaleFactor = 1時,您將獲得第二個(正確的圖像)。 –