7

我使用很多浮点图像,并且会发现拥有基于图像的数组表示非常有用。我想创建一个 WPF UserControl,它将数据数组(如下所示)呈现为图像,而不是文本值的可滚动列表。

这可能吗?我查看了有关 VS 2010 可扩展性的MDSN 文档、SO 的VS 2010 扩展列表以及有关创建自定义编辑器的主题,但我对从哪里开始有点迷茫。

替代文字

更新1:

感谢 Brian 和 Basarat Ali 在 DebuggerVisualizer 上的领导。看起来是正确的策略,但不幸的是,任何类型的数组的可视化工具都是不允许的。

一种解决方法(实用性有限)是可视化包装器对象。

在 Brian 的建议下,我在 CodePlex 上发布了一个解决方案:

VS2010 Debugger Visualizers Contrib ( http://debuggervisualizers.codeplex.com/ )。

该项目的源代码演示了一个工作包装可视化器和一个用于一维 double[] 数组的非功能性“原始”数据可视化器。这是运行测试控制台的屏幕截图:

替代文字

如果有人对如何解决此问题有任何建议,请告诉我!

此外,欢迎对 System.Array 为什么无法可视化的任何解释!

更新 2:

我刚刚用 DebuggerVisualizer 这个词重新搜索了 SO,发现这是以前问过的。看起来用户 Will Dean 建议使用 Wea​​kReference 来实现 Project Mole 的解决方法。不过,看不到这在 DebuggerVisualizer 中是如何工作的。

更新 3:

Project MoleJosh Smith刚刚提出了一个非常有用的解决方法(感谢 Josh!):

请注意,您可以使用 ArrayWrapper 方法而无需修改源代码来打开可视化工具。你可以在 VS 的 Watch 窗口中输入:

新的 YourNamespace.ArrayWrapper(myArray);

按 Enter 键,然后您应该会在该代码行旁边的 Watch 窗口中看到一个放大镜图标。单击它以打开您的自定义可视化工具。

4

2 回答 2

2

您应该创建一个调试器可视化工具。这是一个演练:http: //msdn.microsoft.com/en-us/library/ms164759.aspx。我相信您想要的是能够在外部程序中查看所有结果。为此,您只需在列表中添加一个导出选项即可导出为 csv 文件。但是,如果您仍然觉得需要位图,您可以使用 RenderTargetBitmap 将列表转换为图像:http: //msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

于 2010-11-28T14:15:20.633 回答
0

由于这是调试器中的运行时信息,您可能会考虑使用DebuggerVisualizer而不是编辑器扩展。有一些权衡,我不清楚哪个最适合这个。

(无论如何,我认为这是可能的,而且它看起来确实很有用,我希望有空闲周末的人破解一个并发布源代码。)

于 2010-11-27T22:29:06.797 回答