【问题标题】:Use DirectWrite from a C# XAML Metro-style app从 C# XAML Metro 风格应用程序使用 DirectWrite
【发布时间】:2012-03-08 15:33:36
【问题描述】:

您能否提供一些关于如何从基于 C# XAML 的 Metro 风格应用程序中使用 DirectWrite 的指南。我想创建一个基于 XAML 的 UI,但我也想有效地将​​自定义文本写入屏幕。

我的猜测是我可以在 C++ 中创建一个直接访问 DirectWrite 的 WinRT 组件,并使用 C# 项目中的该组件。这可能吗?

我尝试从 C# XAML Metro 应用程序引用 Direct2D 项目,但我什至无法实例化由 Direct2D 模板生成的类(它抛出“动态链接库 (DLL) 初始化例程失败。(来自 HRESULT 的异常) : 0x8007045A)" 异常)。

然后我尝试创建一个 WinRT 组件 DLL 项目,然后将 Direct2D 项目中的代码文件复制粘贴到该项目中,但无法编译。

Direct2D 和 WinRT 组件 DLL 项目类型之间是否存在根本区别?我可以从前面创建的 C# 访问类吗?我可以使用后者的 Direct2D 吗?

更新:我发现了一个 - 有点令人失望 - 对类似问题 (http://social.msdn.microsoft.com/Forums/en-ZA/winappswithcsharp/thread/2d7ab4a7-9248-426e-8b4d-644b451bef7a) 的回答,但那是在消费者预览版之前。我希望从那时起情况有所改变。

【问题讨论】:

标签: c# c++ xaml windows-runtime directx


【解决方案1】:

这是一个很晚的答案,但是... 此 DirectX C++/CX 包装器:http://directxwinrt.codeplex.com/ 暴露相当多的 D2D(但很少有 DWrite,...)

【讨论】:

  • 谢谢!从那时起,我们设法让它在原生 C++ 中工作,但包装器应该对新手来说很方便。
【解决方案2】:

现在我找到了一篇博客文章,它回答了我的部分问题是否可行:http://blogs.msdn.com/b/windowsappdev/archive/2012/03/01/what-s-changed-since-build-part-1.aspx,因此从消费者预览版开始就可以混合使用 XAML 和 DirectX。

这里有一个详细的指南:http://msdn.microsoft.com/library/windows/apps/hh825871.aspx。如果我发现我的方法有什么问题以及应该如何正确完成,我将更新这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多