2010-11-09 7 views
7

Ich arbeite mit vielen Gleitkommabildern und würde es sehr nützlich finden, eine bildbasierte Darstellung meiner Arrays zu haben. Ich möchte ein WPF-Benutzersteuerelement erstellen, das das Datenarray (wie unten gezeigt) als Bild anstelle einer bildlauffähigen Liste von Textwerten rendert.Wie kann ich in Visual Studio 2010 ein benutzerdefiniertes Add-In für Adverser für numerische Arrays erstellen?

Ist das möglich? Ich habe die MDSN documentation auf VS 2010 Erweiterbarkeit, SO list of VS 2010 extensions und this topic bei der Erstellung eines benutzerdefinierten Editors angeschaut, aber ich bin ein bisschen verloren auf, wo ich anfangen soll.

alt text

Update 1:

Dank Brian und Basarat Ali für die Leitungen auf DebuggerVisualizer. Sieht aus wie die richtige Strategie, außer dass leider ein Visualizer für jede Art von Arrays is disallowed.

Ein Workaround (von begrenztem Nutzen) ist die Visualisierung eines Wrapper-Objekts.

Bei Brian Vorschlag, ich habe eine Lösung auf CodePlex veröffentlicht:

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

Der Quellcode des Projekts zeigt einen funktionierenden Wrapper-Visualizer und einen nicht-funktionalen "rohen" Daten-Visualizer für ein 1D double [] -Array. Hier ist ein Screenshot der Testkonsole läuft:

alt text

Wenn jemand irgendwelche Vorschläge auf hat, wie dieses Problem arbeiten-around, lass es mich wissen!

Auch jede Erklärung, warum System.Array nicht visualisiert werden kann, ist willkommen!

Update 2:

ich mit dem Wort nur wieder gesucht SO DebuggerVisualizer, und diese previously asked zu finden sein. Es sieht so aus, als würde der Benutzer Will Dean vorschlagen, Project Moles Work-around using a WeakReference zu implementieren. Sehen Sie nicht, wie dies in einem DebuggerVisualizer funktionieren würde.

Update 3:

Josh Smith von Project Molesuggested nur eine sehr hilfreiche Arbeit um (Dank Josh!):

Hinweis, können Sie Ihre ArrayWrapper Ansatz verwenden, ohne den Quellcode zu ändern um einen Visualizer zu öffnen. Sie können dies in das Überwachungsfenster in VS eingeben:

new YourNamespace.ArrayWrapper (myArray);

Drücken Sie die Eingabetaste, dann sollte ein Lupensymbol im Überwachungsfenster neben dieser Codezeile angezeigt werden. Klicken Sie darauf, um Ihren benutzerdefinierten Visualizer zu öffnen.

Antwort

2

Sie sollten einen Debugger Visualizer erstellen. Hier ist eine Komplettlösung: http://msdn.microsoft.com/en-us/library/ms164759.aspx. Ich glaube, dass Sie alle Ergebnisse in einem externen Programm sehen können. Dazu können Sie einfach eine Exportoption zu Ihrer Liste hinzufügen, um sie als CSV-Datei zu exportieren. Wenn Sie jedoch immer noch ein Bitmap haben möchten, können Sie die Liste mithilfe von RenderTargetBitmap in ein Bild konvertieren: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

+0

Danke! Siehe mein Update - sieht so aus als wäre System.Array nicht erlaubt. –

+0

Nur zu aktualisieren, danke für den Export-Rat, aber ich möchte wirklich eine Lösung, um on-the-fly zu visualisieren. –

+0

Sieht aus wie DebuggerVisualizer ist der Weg zu gehen. Informationen zu systemeigenen Arrays finden Sie in einem Workaround in meinem Update Nr. 3, das das Überwachungsfenster in VS verwendet. –

0

Da dies für Laufzeitinformationen im Debugger ist, könnten Sie eine DebuggerVisualizer anstelle einer Editor-Erweiterung in Erwägung ziehen. Es gibt einige Kompromisse, ich bin nicht klar, welches wäre das Beste dafür.

(Auf jeden Fall denke ich, es möglich ist, und es sieht nützlich, und ich hoffe, dass jemand mit einem Ersatz-Wochenende der Quellcode ein und Beiträge hackt.)

+0

Vielen Dank! Siehe mein Update - sieht so aus als wäre System.Array nicht erlaubt. CodeProject Website ist GO! :) –