C# 如何自定义注释文件

C# 如何自定义注释文件,c#,wpf,annotations,xps,C#,Wpf,Annotations,Xps,我目前正处于一个项目的设计阶段,客户需要一个桌面应用程序,可以用来查看和注释“任何”类型的文档。我一直在研究WPF文档查看器和XPS文档,它似乎非常适合,因为使用XPS文档编写器,您可以将任何内容打印到XPS文档,并在WPF应用程序中轻松查看。我用几种不同的文档类型(PDF、网页、word文档等)对此进行了测试,结果令人印象深刻。我想远离AdobePDF审查工具,因为处理他们的API可能很困难,如果可能的话,我想设计一个全MS的解决方案 XPS的另一个主要优点是,我们可以使用WPF注释框架(Sy

我目前正处于一个项目的设计阶段,客户需要一个桌面应用程序,可以用来查看和注释“任何”类型的文档。我一直在研究WPF文档查看器和XPS文档,它似乎非常适合,因为使用XPS文档编写器,您可以将任何内容打印到XPS文档,并在WPF应用程序中轻松查看。我用几种不同的文档类型(PDF、网页、word文档等)对此进行了测试,结果令人印象深刻。我想远离AdobePDF审查工具,因为处理他们的API可能很困难,如果可能的话,我想设计一个全MS的解决方案

XPS的另一个主要优点是,我们可以使用WPF注释框架(System.Windows.Annotations),但我的问题是,该框架是一个良好的开端,但客户端需要框架没有提供的更丰富的功能,如以下:

  • 能够围绕文档的各个部分绘制矩形或椭圆
  • 利用文档的能力
  • 能够将便笺添加到图像或文档上任何他们想要的位置,而无需将其锚定到文本的特定部分
  • 在便笺上显示注释的作者
  • 为每个屏幕显示不同颜色的便笺
  • 将音符标记为高优先级或低优先级并相应更改音符颜色的按钮
谢谢你提供的任何建议


--Mehar

您可以使用XPS文档和WPF来完成上述所有要求

您只需创建一个屏幕外画布(用户看不到),然后加载现有XPS文档。然后,您只需添加所需的任何图形/UI对象(矩形、圆形、位图效果、文本等),并且应该能够轻松地将控件呈现在现有XPS文档的上方

您将拥有WPF的全部渲染/UI功能,可以绘制世界上您需要的任何东西

在画布上调用InvalidateArrange()和InvalidateMeasure()需要一些手工工作,但应该相当简单


我唯一的另一个建议是使用PDF,因为大多数普通用户都习惯于使用PDF,或者在应用程序中提供某种导入功能。如果您选择pdf格式,还可以查看的开源项目。

Hmmm,这听起来很熟悉

如果我是你,我会避免定制WPF注释框架,因为我已经走上了这条路,它的难度很高,需要反射才能访问您需要的属性。如果有可能以web应用程序的形式提供此解决方案,那么我建议您查看一楼软件的文档
toolkit:firstfloorsoftware.com/documenttoolkit/

这是silverlight中的XPS查看器/转换器/注释框架,完全在web浏览器中运行。我不属于一楼,但如果这个框架(和silverlight 3)在一年前就可以使用,那么我肯定会选择它。这并不便宜,但比在WPF中完成所有工作要便宜得多


如果你决定采用WPF路线,那么德里克·梅尔霍恩的博客上有一些有趣的东西:

有趣,但我在这里并没有看到任何问题。