簡體   English   中英

CopyFromScreen可在32位Win10計算機上運行,​​但不能在64位計算機上運行

[英]CopyFromScreen works on 32-bit Win10 computer but not 64-bit

我在Win10 32位計算機上開發了此代碼。 我在面板pnlFull中放置了一些圖形。 然后,我復制pnlFull的內容並將其另存為bmp文件在磁盤上。 調試/發布/ AnyComputer / 32位/ 64位都可以在32位計算機上正常運行。 發行版32位/ 64位/ AnyComputer在64位計算機上無法正常工作。 在64位計算機上,副本的起源在pnlFull之外。 根據我的表單在屏幕上的位置,副本的來源甚至位於表單之外。 我真的很感謝您的幫助。

Private Sub Capture_Preset()
    Using tmpImg as New Bitmap(pnlFull.Width, pnlFull.Height)
    Using g as Graphics = Graphics.FromImage(tmpImg)
    g.CopyFromScreen(pnlFull.PointToScreen(New Point(0, 0)), New Point(0, 0), New Size(pnlFull.Width, pnlFull.Height))
    End using
    tmpImg.Save("C:\ProgramData\Paedia\DiablocData\PresetImg(" & PresetNumber & ").bmp", Imaging.ImageFormat.Bmp)
    End using
End Sub

我認為Control.DrawToBitmap()是您所需要的。 它將使控件將自身繪制到您選擇的位圖上:

Using tmpImg as New Bitmap(pnlFull.Width, pnlFull.Height)
    pnlFull.DrawToBitmap(tmpImg, New Rectangle(New Point(0, 0), tmpImg.Size))
    tmpImg.Save("C:\ProgramData\Paedia\DiablocData\PresetImg(" & PresetNumber & ").bmp", Imaging.ImageFormat.Bmp)
End Using

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM