首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DirectXTK在Windows应用程序(Metro)中保存屏幕截图

使用DirectXTK在Windows应用程序(Metro)中保存屏幕截图
EN

Stack Overflow用户
提问于 2013-09-06 14:57:34
回答 2查看 673关注 0票数 0

我正在开发一个C++ Windows应用程序,我经常尝试将屏幕截图保存到磁盘上。

我使用的是DirectX工具包 (DirectXTK)和返回HRESULT的函数SaveDDSTextureToFile。

问题是返回的HRESULT总是:

E_ACCESSDENIED通用访问被拒绝错误。

我认为这是一些权限/功能的问题(它是一个windows商店应用程序),但我找不到我需要什么权限才能将文件保存到磁盘。

DirectX ToolKit说它适用于Windows应用程序和桌面应用程序,但是我也找不到关于它们的codeplex的任何信息。

有人知道我需要什么才能让这件事奏效吗?

耽误您时间,实在对不起。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-11 13:08:10

我设法想办法做到这一点。基本上,正如MooseBoys所说,你不能保存到任何地方,因为应用程序是沙箱。

不过,您可以将其保存到AppData中的应用程序包的AppData文件夹中,这是我所需要的,因为我正在使用此功能进行调试。

所以我的电话是:

代码语言:javascript
复制
DirectX::SaveWICTextureToFile(deviceContext, texture2D, GUID_ContainerFormatPng, L"C:\\Users\\USERNAME\\AppData\\Local\\Packages\\PACKAGENAME\\TempState\\test.png");

而且这个效果很好。

票数 0
EN

Stack Overflow用户

发布于 2013-09-07 00:19:07

Windows Store应用程序是沙箱化的,比桌面应用程序具有更少的权限,特别是在文件访问方面。默认情况下,应用程序只能访问对本地存储目录的写入,而这并不容易从shell中访问。如果要保存到图片或文档库,则需要在包清单中指定此访问权限。此外,您还需要使用WinRT文件API来编写DDS文件。为此,请使用SaveDDSTextureToMemory,然后将生成的原始DDS数据写入StorageFile。有关将数据写入文件所涉及的文件访问示例 API的更多信息,请查看WinRT。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18660754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档