【WGC开发】使用Windows.Graphics.Capture API开发Windows10下捕获窗体界面数据(1)模板选择

使用Windows.Graphics.Capture API开发Windows 10下获取窗体数据

1.开发环境

Visual Studio 2022, C#

2.模板选择

2.1 如果选类库(.NET或.NET Standard类库)

在这里插入图片描述
在这里插入图片描述
默认的项目目标OS为无,需要修改目标OS为Windows,并且
在这里插入图片描述
操作系统版本需要选择WIN10 18362+
在这里插入图片描述
然后 才能添加引用

using Windows.Graphics.Capture;

在这里插入图片描述

2.2 如果选类库(.NET Framework)

在这里插入图片描述
无所谓哪个框架
在这里插入图片描述
由于无法选择目标框架,需要使用NuGet包管理器
在这里插入图片描述
需要安装Microsoft.Windows.SDK.Contracts
在这里插入图片描述
在这里插入图片描述
安装完后,引用里面依然没有,仍然不能用
在这里插入图片描述

在这里插入图片描述
不知道是不是NuGet的问题还是什么,需要手动修改csproj文件
手动增加如下一段内容在如下图的csproj文件的位置

  <ItemGroup>
    <PackageReference Include="Microsoft.Windows.SDK.Contracts">
      <Version>10.0.26100.1742</Version>
    </PackageReference>
  </ItemGroup>

Version要匹配安装的Nuget包的版本
在这里插入图片描述
再次打开解决方案,会发现还是没有引用,此时需要生成一下解决方案后就可以了

在这里插入图片描述
生成解决方案一次后,引用中就会出现蓝色图标的礼物盒图标,表示该引用为NuGet引用
在这里插入图片描述

2.3 如果选窗体应用(Exe)

在这里插入图片描述
基本思路和上面一致
.NET需要改目标OS
默认是WIN7,如下图
在这里插入图片描述

.NET Framework 需要NuGet安装引用,引用后不会生效,需要修改csproj文件后,编译生成一次

### Windows Graphics Capture (WGC) 工作原理 Windows Graphics Capture (WGC) 技术由微软开发并集成到 Windows 10 中,旨在提供一种高效的桌面和窗口采集方法[^2]。此技术利用 DirectX 11 实现图像捕捉功能,在性能表现上优于传统的放大镜采集方式。 #### 基础架构与依赖项 为了正常运作,WGC 要求操作系统至少安装了 DirectX 11 及其相关组件。这是因为 WGC 主要是通过 Direct3D 11 API 来访问图形资源的。当应用程序请求捕获特定窗口或整个幕的内容时,它实际上是在向 Direct3D 发送指令来获取这些视觉数据流[^4]。 #### 数据流动过程 - **初始化阶段**:应用层首先创建一个 `IGraphicsCaptureItem` 接口实例,这可以通过传递目标窗口句柄给工厂函数来完成。对于全捕获,则需指定显示器设备对象。 - **配置参数设置**:接着设定所需的编码格式和其他必要的属性,比如分辨率大小、帧率等信息。这部分操作通常涉及调用 Direct3D 设备管理器中的相应方法来进行调整。 - **启动视频流传输**:一旦所有的前期准备工作就绪之后,就可以开始实际的数据抓取流程了。此时,系统内部会建立一条从 GPU 到 CPU 或者直接到网络端点之间的高速通道用于实时传送渲染后的画面像素值。 - **处理接收到的画面帧**:最后一步就是对接收下来的每一帧图片做进一步加工处理——可能是压缩打包成常见的多媒体容器格式以便存储;也有可能是立即显示出来供用户观看直播内容等等。 ```cpp // 创建图形捕获项 ComPtr<IGraphicsCaptureItem> item; HRESULT hr = CreateGraphicsCaptureItem(hWnd, &item); if (SUCCEEDED(hr)) { // 初始化Direct3D设备... // 设置输出选项... // 开始捕获循环... } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值