qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

DirectX 11 SDK用vb.net对屏幕截图

时间2023-04-03 08:06:31 提问来自 河北省沧州市 的网友 分类创作 浏览426
Imports System.Runtime.InteropServices Imports System.Drawing Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim bmpScreenshot As Bitmap = GetDesktopImage() '获取屏幕截图的Bitmap对象 bmpScreenshot.Save("C:\Users\Administrator\Desktop\test.jpg", Imaging.ImageFormat.Jpeg) '保存为jpg格式图片 End Sub Public Function GetDesktopImage() As Bitmap Dim hDeskDC As IntPtr = GetDC(IntPtr.Zero) ' 获取桌面设备上下文 Dim hSrceDC As IntPtr = CreateCompatibleDC(hDeskDC) ' 创建兼容的设备上下文环境,用于绘制位图 Dim iWidth As Integer = Screen.PrimaryScreen.Bounds.Width ' 获取屏幕宽度 Dim iHeight As Integer = Screen.PrimaryScreen.Bounds.Height ' 获取屏幕高度 Dim hDestBitmap As IntPtr = CreateCompatibleBitmap(hDeskDC, iWidth, iHeight) ' 创建一个兼容位图,用于保存截图内容 Dim hOldObject As IntPtr = SelectObject(hSrceDC, hDestBitmap) ' 选择兼容位图到设备上下文中,返回原来的对象句柄,以便之后恢复使用。 BitBlt(hSrceDC, 0, 0, iWidth, iHeight, hDeskDC, 0, 0, &HCC0020) ' 把当前内存中的位图复制到目标内存中。&HCC0020表示SRCCOPY操作。即将当前窗口的所有内容复制到目标窗口中。也就是将整个屏幕截圖出来。 SelectObject(hSrceDC, hOldObject) ' 恢复原来选择的对象,以便释放该对象占用的内存。此时已将截圖保存在兼容位国中,后面就是将该位国保存为一张jpg格式的文件了。 DeleteObject(hDestBitmap) ' 销毁不使用的对象,释放内存占用 ' 将元数据流Copy到Stream中去 Return System .Drawing . Image .FromHbitmap (hDestBitmap ) ''这里会生成GDI+ 图片 ''最后要注意释放GDI+ 资

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 勒布朗詹姆斯(3张) 下一篇 圣采儿裸体