LazowskiAnton · Extensions

RulerSmith

Przytrzymaj Ctrl+Shift nad debugowaną aplikacją: kontrolka pod wskaźnikiem pokazuje swój rozmiar, a delikatne strzałki — odległości do otaczających ją kontrolek. Puść klawisze i wszystko znika.

Za darmo · Visual Studio 2022 i 2026 · 14 języków interfejsu · bez telemetrii

Dlaczego RulerSmith

Ten sam formularz bez RulerSmith i z nim: obrys przycisku, jego rozmiar i odstępy do sąsiednich kontrolek

Rzeczywiste granice, nie zgadywanie

Rozmiary pochodzą z UI Automation — drzewa, z którego korzystają czytniki ekranu — więc cienie, gradienty i wygładzanie krawędzi go nie zmylą, tak jak mylą linijkę pikselową.

Jednostki, które piszesz

WPF i strony internetowe rozmieszczają elementy w jednostkach niezależnych od urządzenia: 76 × 32 to wartość, którą wpisujesz w XAML lub CSS, a piksele ekranu (152 × 64 przy 200 %) są pokazane pod spodem.

Tylko gdy klawisz jest przytrzymany

Nic nie jest obliczane ani rysowane, dopóki nie przytrzymasz klawisza. Nakładka nigdy nie przejmuje kliknięć ani fokusu i odpoczywa, gdy debuger jest wstrzymany.

Za darmo, bez haczyków

Bez subskrypcji, bez wersji „pro”, bez zbierania danych i bez komunikatów w oknie „Dane wyjściowe” ani przy uruchamianiu. Jedyne, o co kiedykolwiek poprosimy — gdy już przez jakiś czas będziesz z niego korzystać — to ocena w Marketplace. Działa w Visual Studio 2022 i 2026, x64 i ARM64.

Funkcje

Pomiar

Rozpocznij debugowanie, przytrzymaj Ctrl+Shift i przesuwaj wskaźnik nad aplikacją. Nowa kontrolka zostaje obrysowana, pod nią pojawia się jej rozmiar, a odstępy biegną do sąsiadów; liczby podążają za wskaźnikiem od kontrolki do kontrolki.

Obrysowany przycisk Zapisz z rozmiarem i odstępami do przycisku Anuluj, pola komentarza i krawędzi okna
Na ekranieZnaczenie
Cienki obrysGranice kontrolki pod wskaźnikiem. Tekst lub ikona wewnątrz przycisku liczą się jako przycisk.
Button 76 × 32
152 × 64 px · 200 %
Rodzaj i rozmiar w jednostkach aplikacji; na wyświetlaczu ze skalowaniem w drugim wierszu piksele ekranu i skala.
Ciągła strzałkaOdstęp do najbliższej kontrolki z tej strony. Stykające się kontrolki nie mają strzałki.
Przerywana strzałkaBrak kontrolki z tej strony: odstęp do krawędzi kontenera (obszaru klienta okna).

Panel RulerSmith

Debugowanie → Panel RulerSmith (także w menu Widok → Inne okna). Pasek narzędzi włącza i wyłącza pomiar — to ten sam przełącznik co Zmierz układ na pasku narzędzi Debugowanie — oraz osobno każdy rodzaj aplikacji: WPF, WinForms, Win32, Web. Pod nim ostatni pomiar: nazwa i automation id kontrolki (pozwala znaleźć ją w XAML), jej rozmiar, położenie w oknie i każdy odstęp wraz z kontrolką, na której się kończy. Wiersz stanu mówi, dlaczego nic nie jest rysowane: brak debugowania, wstrzymanie w punkcie przerwania lub wyłączony pomiar.

Panel RulerSmith ze zmierzonym przyciskiem Zapisz, jego rozmiarem i odstępami

Jakie aplikacje

RulerSmith odczytuje kontrolki przez UI Automation, więc mierzy to, co aplikacja tam udostępnia — a standardowe kontrolki robią to od razu.

AplikacjaUwagi
WPFJednostki są niezależne od urządzenia. Przezroczysty pasek narzędzi XAML, który Visual Studio nakłada na debugowaną aplikację WPF, jest pomijany; zawartość kart jest odnajdywana.
Windows FormsJednostki to piksele aplikacji: 1:1 dla aplikacji obsługującej DPI, rozciągnięte przez Windows dla takiej, która go nie obsługuje.
Win32, MFCOkna utworzone przez CreateWindow i okna dialogowe z zasobów: przyciski, pola edycji, pola kombi, listy, drzewa.
Strony internetoweEdge, Chrome i Firefox podczas debugowania — Visual Studio często otwiera projekt internetowy w już uruchomionej przeglądarce. Jednostkami są piksele CSS. Przełącznik Web w panelu je wyłącza.

Nieobsługiwane: WinUI, UWP i MAUI. Kontrolka niestandardowa, która nie tworzy automation peer, jest niewidoczna dla UI Automation i zamiast niej mierzony jest jej kontener.

Ustawienia

Narzędzia → Opcje → SmithWorks → RulerSmith. Każda opcja ma opis.

OpcjaDomyślnie
Przytrzymaj, aby zmierzyćCtrl+Shift
Mierz podczas debugowaniawł.
Pokazuj piksele ekranu na wyświetlaczach ze skalowaniemwł.
Animuj pojawianie sięwł.
Wysuwaj strzałki odstępów z kontrolkiwł.
Proś o ocenę w Marketplacewł.

Ustawienia są przechowywane w %LocalAppData%\RulerSmith.

Strona opcji RulerSmith
Strona opcji.

FAQ

Czy RulerSmith wysyła jakieś dane?

Nie. Wszystko dzieje się na Twoim komputerze: mały proces nakładki odczytuje kontrolki przez UI Automation i rysuje na ekranie. Żadnych żądań sieciowych, żadnej telemetrii.

Obrysowywane jest tylko całe okno (lub duży panel). Dlaczego?

Aplikacja nie udostępnia UI Automation kontrolek, które zawiera — zwykle są to kontrolki niestandardowe bez automation peer. Przesłonięcie OnCreateAutomationPeer w takiej kontrolce sprawia, że można ją zmierzyć, a do tego staje się dostępna dla czytników ekranu.

Nic nie jest rysowane, gdy przytrzymuję klawisz.

Sprawdź, czy sesja debugowania trwa i nie jest wstrzymana oraz czy wiersz stanu panelu pokazuje Pomiar. Rodzaj aplikacji może być wyłączony w panelu. Inny program może używać tych samych klawiszy: wybierz inną kombinację w ustawieniach.

Dlaczego zatrzymuje się w punkcie przerwania?

Wstrzymana aplikacja nie może odpowiadać UI Automation. Nakładka odpoczywa, dopóki nie wznowisz (F5).

Czy WinUI, UWP lub MAUI będą obsługiwane?

Na razie nie. Jeśli ich potrzebujesz, napisz o tym w repozytorium Feedback.

Czy mogę zmierzyć aplikację bez Visual Studio?

Tak: uruchom RulerSmith.Overlay.exe z folderu rozszerzenia. Działa w zasobniku systemowym i mierzy dowolne okno, gdy klawisz jest przytrzymany.

Gdzie zgłosić problem lub zaproponować funkcję?

Utwórz zgłoszenie w repozytorium Feedback w serwisie GitHub — są tam formularze dla błędów i pomysłów (zmień poufne nazwy). Możesz też skorzystać z karty Q&A w Marketplace.

Historia zmian

1.0.2

1.0.1

1.0.0