0

我有一个随应用程序一起提供的模板图像,我希望用户能够打开、编辑它并将其保存为本地新图像。我已经按照此处概述的方式工作了开头部分Open an image with the Windows default editor in C#

我真正需要做的是打开它不允许保存,只是另存为。我还想指定目标文件夹。有谁知道你是否可以用动词来做到这一点?

谢谢。

4

2 回答 2

1

无控制

除非应用程序允许通过环境变量或命令参数或其他设置选项的方式进行这种控制,否则您将无法对打开的应用程序进行这种控制。当您启动另一个应用程序时,您将受制于它处理文件的方式。如果您想要更多的控制,那么您将不得不使用可以适合您的应用程序的图像编辑器控件。

嵌入式图像编辑器

图像编辑是一项复杂的任务。现有库中提供了以几何方式或通过使用着色器来改变图像的过滤器。但是如果你想要更复杂的效果,比如取景、添加文本等,你需要一个专业的图像编辑库。大牌图像编辑器不会将他们的产品作为库提供,但您可以在市场上找到出售的解决方案。如果您想要一些允许更多复合效果的东西,您可能需要对现有图像上覆盖 WPF 元素的结果进行图像抓取。

模板图像作为资源

另一种方法是让模板成为您的应用程序中的资源或您提供的 dll,它们无法保存。您将提取资源,将其写为文件,然后在默认编辑器中打开该文件。然后他们可以保存、另存为等,而不会有覆盖原始模板的风险。但是您仍然无法控制他们保存的位置。你也不会知道他们甚至做了什么。他们是否关闭而不保存,保存到某个位置,保存在文件上,您都将不知道。您可以监控文件夹位置,但除非应用程序提供该信息,否则您将无法取回数据。

限制保存位置

现在,一旦你解决了这个问题,目标文件夹就是一个大问题。文件对话框没有直接限制文件位置的方法。所以你需要要么不使用文件对话框,要么钩入它的file-ok 事件

file-ok 事件使您有机会取消保存/加载并使对话框保持打开状态,但我认为如果您打算将文件限制在单个文件夹中,最好创建自己的对话框。

于 2013-08-09T18:16:06.773 回答
0

动词与文件类型有关,而不是保存对话框。如果用户选择“另存为”您的原始文件,您会怎么做?

我认为您需要将编辑器拉入您的应用程序并从那里控制保存对话框。

或者您可以尝试保留文件的备份副本,如果原始文件被更改,则通过系统替换文件。

于 2013-08-09T18:19:00.653 回答