2010-11-09 30 views
7

Trabajo con muchas imágenes de punto flotante, y me parece extremadamente útil tener una representación basada en imágenes de mis matrices. Me gustaría crear un UserControl de WPF que represente la matriz de datos (como se muestra a continuación) como una imagen, en lugar de una lista desplazable de valores de texto.¿Cómo puedo crear un complemento adornador de imágenes personalizado para matrices numéricas en Visual Studio 2010?

¿Esto es posible? He consultado el MDSN documentation en la extensibilidad de VS 2010, en SO list of VS 2010 extensions, y en this topic en la creación de un editor personalizado, pero estoy un poco perdido sobre dónde empezar.

alt text

Actualización 1:

Gracias a Brian y Basarat Ali para los conductores en DebuggerVisualizer. Parece que la estrategia correcta, EXCEPTO que desafortunadamente un visualizador para cualquier tipo de matrices is disallowed.

Una solución temporal (de utilidad limitada) es visualizar un objeto contenedor.

A sugerencia de Brian, han publicado una solución en CodePlex:

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

El código fuente del proyecto muestra un visualizador de envoltura de trabajo y un visualizador de datos "en bruto" no funcional para una matriz 1D doble []. Aquí hay una captura de pantalla de la consola de prueba de funcionamiento:

alt text

Si alguien tiene alguna sugerencia sobre cómo trabajar alrededor de este problema, por favor hágamelo saber!

Además, ¡cualquier explicación de por qué System.Array no se puede visualizar es bienvenida!

Actualización 2:

acabo de re-SO buscado con la palabra DebuggerVisualizer, y parece que este es previously asked. Parece que el usuario Will Dean sugiere implementar el trabajo de Project Mole: using a WeakReference. Sin embargo, no veo cómo esto funcionaría en un DebuggerVisualizer.

Actualización 3:

Josh Smith de Project Mole simplemente suggested un trabajo muy útil en todo (gracias Josh!):

Nota, se puede utilizar el enfoque ArrayWrapper sin necesidad de modificar el código fuente para abrir un visualizador Puede escribir esto en la ventana Inspección en VS:

new YourNamespace.ArrayWrapper (myArray);

Pulse la tecla Intro, luego debería ver un icono de lupa en la ventana Mirar al lado de esa línea de código. Haga clic para abrir su visualizador personalizado.

Respuesta

2

se debe crear un visualizador de depurador. Aquí hay un tutorial: http://msdn.microsoft.com/en-us/library/ms164759.aspx. Creo que lo que quieres es poder ver todos los resultados en un programa externo. Para esto, puede agregar una opción de exportación a su lista para exportarla como un archivo csv. Sin embargo, si aún sientes que quieres un mapa de bits, puedes convertir la lista en una imagen usando RenderTargetBitmap: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

+0

Gracias! Ver mi actualización: parece System.Array no está permitido. –

+0

Solo para actualizar, gracias por los consejos sobre exportación, pero realmente quiero una solución para visualizar sobre la marcha. –

+0

Parece que DebuggerVisualizer es el camino a seguir. Para las matrices nativas, vea una solución alternativa en mi Actualización # 3 que usa la ventana Inspección en VS. –

0

Dado que esto es para información de tiempo de ejecución en el depurador, puede considerar una extensión DebuggerVisualizer en lugar de una extensión de editor. Hay algunos intercambios, no estoy seguro de cuál sería el mejor para esto.

(En cualquier caso, creo que es posible, y que tiene un aspecto útil, y espero que alguien con un fin de semana libre hackea un out y mensajes del código fuente.)

+0

¡Gracias! Ver mi actualización: parece System.Array no está permitido. El sitio de CodeProject es GO! :) –

Cuestiones relacionadas