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

时间:2017-05-19 05:43:27

标签: c# directx buffer sharpdx dxgi

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

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

1 个答案:

答案 0 :(得分:0)

可以实现你的任务,但它需要在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功能执行,并在视频内存的上下文中完成。

问候。