如何使用Windows应用商店C++在没有窗口句柄的情况下渲染路径几何体

本文关键字:情况下 窗口句柄 几何体 路径 应用 Windows 何使用 C++ | 更新日期: 2023-09-27 18:25:49

在我的Windows应用商店应用程序中,我必须在C++中使用Direct2D绘制路径几何图形。在我的场景中,为了在应用程序中获得更好的性能,我选择了Direct2D,而不是使用基本的Polyline对象。因此,我的C#应用程序将与Direct2D绘图的C++组件进行通信。

此链接有助于获取有关PathGeometry的Direct2D绘图的更多信息。但它在"窗口控制柄"中绘制几何体,但我需要像普通UIElement渲染一样进行绘制,而不是使用"窗口控制手柄"。网上有样品可以解决我的问题吗?

如何使用Windows应用商店C++在没有窗口句柄的情况下渲染路径几何体

有DirectX/XAML集成的示例,我认为甚至可能有一个VS项目模板用于集成这些示例,其中包括Direct2D代码,尽管可能在单个项目国家的C++应用程序中,而您需要创建一个本机WinRT组件,该组件向您的应用程序公开C++/CX API以放入SwapChainPanel(最佳选项,但需要Windows 8.1),SwapChainBackgroundPanel(不错的选项,但仅限全屏)或SurfaceImageSource

我们必须使用创建SurfaceImageSource的工厂;我们不应该新建工厂。所以我们将有这样的代码:

 ID2D1Factory *pFactory=nullptr;
 d2dDevice->GetFactory(&pFactory);
 ID2D1GeometrySink *pSink = NULL;
 ID2D1PathGeometry *pPathGeometry=NULL;
 // Create a path geometry.
 HRESULT hr = pFactory->CreatePathGeometry(&pPathGeometry);

终于解决了我的问题。