Как отобразить геометрию пути без дескриптора окна с помощью Магазина Windows C++
В моем приложении для Магазина Windows я должен нарисовать геометрию пути, используя Direct2D на C++. В моем сценарии вместо использования основных Polyline
объект, я иду на Direct2D для лучшей производительности в моем приложении. Таким образом, мое приложение C# будет взаимодействовать с компонентом C++ для рисования Direct2D.
Эта ссылка помогла получить больше информации о рисовании Direct2D для PathGeometry
, Но он рисует геометрию в дескрипторе окна, но вместо того, чтобы использовать дескриптор окна, мне нужно сделать рисование, как в обычном UIElement
рендеринг. Есть ли в сети образец для решения моей проблемы?
2 ответа
Мы должны использовать фабрику, которая создала SurfaceImageSource; Мы не должны создавать новую фабрику. Так что у нас будет такой код:
ID2D1Factory *pFactory=nullptr;
d2dDevice->GetFactory(&pFactory);
ID2D1GeometrySink *pSink = NULL;
ID2D1PathGeometry *pPathGeometry=NULL;
// Create a path geometry.
HRESULT hr = pFactory->CreatePathGeometry(&pPathGeometry);
Наконец это решило мою проблему.
Существуют примеры для интеграции DirectX/XAML, и я думаю, что может даже существовать шаблон проекта VS для их интеграции, который включает в себя код Direct2D, хотя, возможно, в одном приложении C++ проекта natice, тогда как вам нужно будет создать собственный компонент WinRT, который предоставляет C++/CX API для вашего приложения, чтобы положить в SwapChainPanel
(лучший вариант, но требует Windows 8.1), SwapChainBackgroundPanel
(хороший вариант, но только в полноэкранном режиме) или SurfaceImageSource
,