捕获鼠标光标并在图像缓冲区上绘制 c#

Capturing Mouse Cursor and Draw on Image Buffer c#

我正在开发一个屏幕录制应用程序,我可以捕获屏幕但没有鼠标光标。我使用了 DXGI、SharpDX 和 Media Foundation。

我的问题是。是否可以将鼠标光标写在图像缓冲区上,以便我发送到 mediafoundation 的图像缓冲区在编码为视频之前已经有鼠标光标?在这里看到很多示例如何在屏幕捕获中包含鼠标光标,但他们所做的是将两个图像转换为位图,然后将两者结合起来。我已经尝试过了,但性能不佳,cpu 使用率很高,而且 fps 也很低。没有光标我可以流畅地捕捉 60fps。提前致谢

可以实现你的任务,但需要在 C# 上从 C++ 复制一些代码。在我的项目 Desktop Screen Capture on Windows via Windows Desktop Duplication API with Drawing of Cursor's Image 中你可以找到合适的解决方案。它是基于使用一个特殊的 Direct3D11 纹理 - 它是用 MiscFlag - D3D11_RESOURCE_MISC_GDI_COMPATIBLE 创建的。它允许通过 IDXGISurface1::GetDC 在表面上进行 GDI 渲染,并使用 Windows 函数 DrawIconEx 来绘制光标的图像。光标的绘制由 Windows 函数执行,并在显存的上下文中完成。

此致。