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

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
- Rozmiar kontrolki pod wskaźnikiem wraz z jej rodzajem (Button, ComboBox…), w jednostkach aplikacji i w pikselach ekranu na wyświetlaczu ze skalowaniem.
- Odstępy do sąsiadów: najbliższa kontrolka z każdej strony lub, gdy jej brak, krawędź kontenera — linie, które narysowałbyś ręcznie.
- DPI dla każdego monitora: uwzględniane jest skalowanie każdego monitora, a aplikacje WinForms i Win32 są mierzone we własnych pikselach, niezależnie od tego, czy obsługują DPI.
- Panel RulerSmith: nazwa i automation id kontrolki, jej rozmiar, położenie i odstępy wraz z tym, na czym się kończą; przełączniki pomiaru i każdego rodzaju aplikacji.
- Delikatne pojawianie się: obrys pojawia się płynnie, a potem strzałki wysuwają się z kontrolki — albo wszystko naraz, albo bez animacji.
- Powiązanie z sesją debugowania: startuje po F5, mierzy tylko debugowaną aplikację (i to, co ona otwiera, np. WebView2 lub przeglądarkę projektu internetowego) i kończy się wraz z sesją.
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.

| Na ekranie | Znaczenie |
|---|---|
| Cienki obrys | Granice 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łka | Odstęp do najbliższej kontrolki z tej strony. Stykające się kontrolki nie mają strzałki. |
| Przerywana strzałka | Brak 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.

Jakie aplikacje
RulerSmith odczytuje kontrolki przez UI Automation, więc mierzy to, co aplikacja tam udostępnia — a standardowe kontrolki robią to od razu.
| Aplikacja | Uwagi |
|---|---|
| WPF | Jednostki 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 Forms | Jednostki 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, MFC | Okna utworzone przez CreateWindow i okna dialogowe z zasobów: przyciski, pola edycji, pola kombi, listy, drzewa. |
| Strony internetowe | Edge, 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.
| Opcja | Domyślnie |
|---|---|
| Przytrzymaj, aby zmierzyć | Ctrl+Shift |
| Mierz podczas debugowania | wł. |
| Pokazuj piksele ekranu na wyświetlaczach ze skalowaniem | wł. |
| Animuj pojawianie się | wł. |
| Wysuwaj strzałki odstępów z kontrolki | wł. |
| Proś o ocenę w Marketplace | wł. |
Ustawienia są przechowywane w %LocalAppData%\RulerSmith.

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
- Jednorazowa prośba o ocenę w Marketplace, gdy rozszerzenie okaże się przydatne — z opcjami Później i Nie pytaj więcej oraz ustawieniem, które ją wyłącza.
1.0.1
- Link „Oceń w Marketplace” w ustawieniach.
1.0.0
- Pierwsze publiczne wydanie.