CopyFromScreen 适用于 32 位 Win10 计算机,但不适用于 64 位计算机
CopyFromScreen works on 32-bit Win10 computer but not 64-bit
我在Win10 32位机器上开发了这段代码。我将一些图形放入面板中,pnlFull。然后我复制 pnlFull 的内容并将它们保存为磁盘上的 bmp 文件。 Debug/Release/AnyComputer/32-bit/64-bit 在 32 位机器上一切正常。版本 32-bit/64-bit/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
我在Win10 32位机器上开发了这段代码。我将一些图形放入面板中,pnlFull。然后我复制 pnlFull 的内容并将它们保存为磁盘上的 bmp 文件。 Debug/Release/AnyComputer/32-bit/64-bit 在 32 位机器上一切正常。版本 32-bit/64-bit/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