2017-05-19 100 views
1

我正在使用屏幕录制应用程序,我可以捕获屏幕但没有鼠标光标。我使用了DXGI,SharpDX和媒体基金会。捕获鼠标光标并在图像缓冲区上绘图c#

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

回答

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功能执行,并在视频内存中进行。

问候。

+0

我在IDXGISurface1 :: GetDC的堆栈。我无法在SharpDX中找到此代码的封装器。 – kripto

+0

为什么你找不到?检查链接[SharpDX-DXGI API](http://sharpdx.org/wiki/class-library-api/dxgi/#api-Interfaces) - 它有'IDXGISurface1

  • GetDC
  • ???
  • ???

该接口通过添加对使用Windows图形设备接口(GDI)呈现给Microsoft DirectX图形基础结构(DXGI)表面的支持来扩展该接口。

' –

+0

发现它感谢它现在的工作 – kripto