2010-11-09 9 views
7

Pracuję z wieloma obrazami zmiennoprzecinkowymi i bardzo użyteczne byłoby posiadanie opartej na obrazie reprezentacji moich tablic. Chciałbym utworzyć UserControl WPF, który renderuje tablicę danych (jak pokazano poniżej) jako obraz, zamiast przewijanej listy wartości tekstowych.Jak mogę utworzyć niestandardowy dodatek do adoratora obrazu dla tablic numerycznych w Visual Studio 2010?

Czy to możliwe? Spojrzałem na MDSN documentation na rozszerzalność VS 2010, na SO list of VS 2010 extensions, i na this topic na tworzenie niestandardowego edytora, ale jestem trochę zagubiony, gdzie zacząć.

alt text

Aktualizacja 1:

Dzięki Brian i Basarat Ali dla przewodów o DebuggerVisualizer. Wygląda jak właściwa strategia, Z WYJĄTKIEM niestety wizualizatora dla każdego rodzaju tablic is disallowed.

Obejście (ograniczone narzędzie) służy do wizualizacji obiektu opakowania.

Na sugestię Briana, I napisali rozwiązanie na CodePlex:

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

Kod źródłowy projektu demonstruje działający wizualizator opakowania i niefunkcjonalny "surowy" wizualizator danych dla podwójnej tablicy 1D. Oto zrzut ekranu z gry konsoli testowej:

alt text

Jeśli ktoś ma jakieś sugestie dotyczące sposobu obejścia tego problemu, proszę dać mi znać!

Ponadto, nie jest możliwe wyjaśnienie, dlaczego System.Array nie może być wizualizowany!

Aktualizacja 2:

Właśnie ponownie przeszukiwane SO ze słowem DebuggerVisualizer i znaleźć to za previously asked. Wygląda na to, że użytkownik Dean zasugeruje wdrożenie obejścia Project Mole na poziomie using a WeakReference. Nie widzę jednak, jak by to działało w programie DebuggerVisualizer.

Update 3:

Josh Smith od Project Mole tylko suggested bardzo pomocny obejść (dzięki Josh!):

Uwaga, można użyć podejścia ArrayWrapper bez konieczności modyfikowania kodu źródłowego otworzyć wizualizator. Możesz wpisać to w oknie Watch w VS:

new YourNamespace.ArrayWrapper (myArray);

Naciśnij klawisz Enter, wtedy powinieneś zobaczyć ikonę lupy w oknie obserwacyjnym obok tego wiersza kodu. Kliknij, aby otworzyć niestandardowy wizualizator.

Odpowiedz

2

Należy utworzyć wizualizera debuggera. Oto przewodnik: http://msdn.microsoft.com/en-us/library/ms164759.aspx. Wierzę, że to, czego chcesz, to móc zobaczyć wszystkie wyniki w zewnętrznym programie. W tym celu można po prostu dodać opcję eksportu do listy eksportu w postaci pliku csv. Jeśli jednak nadal masz ochotę na mapę bitową, możesz ją przekonwertować na obraz przy użyciu RenderTargetBitmap: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

+0

Dzięki! Zobacz moją aktualizację - wygląda jak System.Array jest niedozwolony. –

+0

Po prostu aktualizuję, dziękuję za porady dotyczące eksportu, ale naprawdę chcę mieć rozwiązanie do wizualizacji w locie. –

+0

Wygląda na to, że DebuggerVisualizer jest drogą do zrobienia. W przypadku tablic rodzimych obejrzyj obejście mojej aktualizacji # 3, która używa okna Watch w VS. –

0

Ponieważ jest to informacja o środowisku wykonawczym w debugerze, można rozważyć raczej DebuggerVisualizer niż rozszerzenie edytora. Są pewne kompromisy, jestem niejasny, który byłby najlepszy do tego.

(W każdym razie myślę, że jest to możliwe, i to wygląda użyteczne, a mam nadzieję, że ktoś z wolnym weekendzie hacki jeden i posty kodu źródłowego.)

+0

Dzięki! Zobacz moją aktualizację - wygląda jak System.Array jest niedozwolony. Strona CodeProject to GO! :) –

Powiązane problemy