2010-11-09 15 views
7

Lavoro con molte immagini in virgola mobile e troverei estremamente utile avere una rappresentazione basata su immagini dei miei array. Mi piacerebbe creare un UserControl WPF che restituisce l'array di dati (come mostrato sotto) come un'immagine, invece di un elenco scorrevole di valori di testo.Come è possibile creare un componente aggiuntivo personalizzato per l'adorner di immagini per gli array numerici in Visual Studio 2010?

È possibile? Ho esaminato lo MDSN documentation sull'estensibilità VS 2010, al SO list of VS 2010 extensions e al this topic sulla creazione di un editor personalizzato, ma sono un po 'perso su dove iniziare.

alt text

Update 1:

Grazie a Brian e Basarat Ali per i conduttori su DebuggerVisualizer. Sembra la strategia corretta, TRANNE che sfortunatamente un visualizzatore per qualsiasi tipo di array is disallowed.

Un work-around (di utilità limitata) consiste nel visualizzare un oggetto wrapper.

Su suggerimento di Brian, ho postato una soluzione su CodePlex:

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

Il codice sorgente del progetto mostra un visualizzatore wrapper funzionante e un visualizzatore di dati "non elaborati" non funzionante per un array 1D double []. Ecco uno screenshot del test console in esecuzione:

alt text

Se qualcuno ha qualche suggerimento su come lavorare-a questo problema, per favore fatemelo sapere!

Inoltre, qualsiasi spiegazione del motivo per cui System.Array non può essere visualizzato è il benvenuto!

Aggiornamento 2:

ho appena ri-cercato SO con la parola DebuggerVisualizer, e trovo che questo sia previously asked. Sembra che l'utente Will Dean suggerisca di implementare il work-around di Project Mole using a WeakReference. Tuttavia, non si vede come funzionerebbe in un DebuggerVisualizer.

Update 3:

Josh Smith di Project Mole solo suggested un lavoro molto utile intorno (grazie Josh!):

Nota, è possibile utilizzare il metodo ArrayWrapper senza bisogno di modificare il codice sorgente per aprire un visualizzatore. È possibile digitare questo nella finestra Watch in VS:

new YourNamespace.ArrayWrapper (myArray);

Premi il tasto Invio, quindi dovresti visualizzare l'icona della lente di ingrandimento nella finestra di controllo accanto a quella riga di codice. Fai clic per aprire il tuo visualizzatore personalizzato.

risposta

2

è necessario creare un visualizzatore debugger. Ecco una soluzione: http://msdn.microsoft.com/en-us/library/ms164759.aspx. Credo che quello che vuoi sia essere in grado di visualizzare tutti i risultati in un programma esterno. Per questo è sufficiente aggiungere un'opzione di esportazione all'elenco per esportare come file csv. Tuttavia, se ritieni di volere una bitmap, puoi convertire l'elenco in un'immagine utilizzando RenderTargetBitmap: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

+0

Grazie! Vedi il mio aggiornamento: sembra che System.Array non sia consentito. –

+0

Solo per l'aggiornamento, grazie per il consiglio di esportazione, ma voglio davvero una soluzione per la visualizzazione al volo. –

+0

Sembra che DebuggerVisualizer sia la strada da percorrere. Per gli array nativi, vedere un work-around nel mio aggiornamento n. 3 che utilizza la finestra Watch in VS. –

0

Poiché questo è per le informazioni di runtime nel debugger, è possibile considerare un DebuggerVisualizer anziché un'estensione di editor. Ci sono alcuni compromessi, non sono chiaro quale sarebbe il migliore per questo.

(In ogni caso, penso che sia possibile, e lo fa apparire utile, e spero che qualcuno con un week-end di riserva hack uno fuori e messaggi il codice sorgente.)

+0

Grazie! Vedi il mio aggiornamento: sembra che System.Array non sia consentito. Il sito CodeProject è GO! :) –

Problemi correlati