LazowskiAnton · Extensions

RulerSmith

Halten Sie Ctrl+Shift über der App, die Sie debuggen: Das Steuerelement unter dem Zeiger zeigt seine Größe, und dezente Pfeile zeigen die Abstände zu den Steuerelementen ringsum. Loslassen – und alles ist weg.

Kostenlos · Visual Studio 2022 und 2026 · 14 UI-Sprachen · keine Telemetrie

Warum RulerSmith

Dasselbe Formular ohne und mit RulerSmith: der Umriss einer Schaltfläche, ihre Größe und die Abstände zu ihren Nachbarn

Echte Grenzen, keine Schätzung

Die Größen kommen aus UI Automation – dem Baum, den Sprachausgaben verwenden –, daher lässt es sich von Schatten, Verläufen und Kantenglättung nicht täuschen wie ein Pixellineal.

Die Einheiten, die Sie schreiben

WPF und Webseiten arbeiten mit geräteunabhängigen Einheiten: 76 × 32 ist das, was Sie in XAML oder CSS schreiben, und die Bildschirmpixel (152 × 64 bei 200 %) stehen darunter.

Nur solange die Taste gehalten wird

Bis Sie die Taste halten, wird nichts berechnet oder gezeichnet. Die Überlagerung nimmt nie einen Klick oder den Fokus an und ruht, solange der Debugger angehalten ist.

Kostenlos, ohne Haken

Kein Abo, keine „Pro“-Version, keine Datensammlung, keine Meldungen im Fenster „Ausgabe“ oder beim Start. Das Einzige, worum wir je bitten werden – nachdem Sie es eine Weile genutzt haben –, ist eine Bewertung im Marketplace. Läuft unter Visual Studio 2022 und 2026, x64 und ARM64.

Funktionen

Messen

Starten Sie das Debuggen, halten Sie Ctrl+Shift und bewegen Sie den Zeiger über die App. Ein neues Steuerelement wird umrandet, seine Größe erscheint darunter, und die Abstände laufen zu den Nachbarn hinaus; die Zahlen folgen dem Zeiger von Steuerelement zu Steuerelement.

Eine umrandete Schaltfläche „Save“ mit ihrer Größe und den Abständen zu „Cancel“, zum Kommentarfeld und zu den Fensterrändern
Auf dem BildschirmBedeutung
Dünner UmrissDie Grenzen des Steuerelements unter dem Zeiger. Text oder ein Symbol in einer Schaltfläche zählt als die Schaltfläche.
Button 76 × 32
152 × 64 px · 200 %
Die Art und die Größe in den Einheiten der App; auf einer skalierten Anzeige die Bildschirmpixel und die Skalierung in einer zweiten Zeile.
Durchgezogener PfeilDer Abstand zum nächsten Steuerelement auf dieser Seite. Aneinanderstoßende Steuerelemente zeigen keinen Pfeil.
Gestrichelter PfeilKein Steuerelement auf dieser Seite: der Abstand zum Rand des Containers (dem Clientbereich eines Fensters).

Der RulerSmith-Bereich

Debuggen → RulerSmith-Bereich (auch unter Ansicht → Weitere Fenster). Die Symbolleiste schaltet das Messen ein und aus – derselbe Schalter wie Layout messen auf der Symbolleiste „Debuggen“ – und jede Art von App einzeln: WPF, WinForms, Win32, Web. Darunter die letzte Messung: Name und Automation-ID des Steuerelements (damit finden Sie es in XAML), seine Größe, seine Position im Fenster und jeder Abstand mit dem Steuerelement, an dem er endet. Die Statuszeile sagt, warum nichts gezeichnet wird: kein Debuggen, an einem Haltepunkt angehalten oder Messen ausgeschaltet.

Der RulerSmith-Bereich mit der gemessenen Schaltfläche „Save“, ihrer Größe und ihren Abständen

Welche Apps

RulerSmith liest die Steuerelemente über UI Automation und misst daher, was die App dort bereitstellt – und das tun Standardsteuerelemente von Haus aus.

AppHinweise
WPFDie Einheiten sind geräteunabhängig. Die durchsichtige XAML-Symbolleiste, die Visual Studio über eine debuggte WPF-App legt, wird übersprungen; der Inhalt von Registerkarten wird gefunden.
Windows FormsDie Einheiten sind die Pixel der App: 1:1 bei einer DPI-fähigen App, von Windows gestreckt bei einer, die es nicht ist.
Win32, MFCMit CreateWindow erstellte Fenster und Dialoge aus Ressourcen: Schaltflächen, Eingabefelder, Kombinationsfelder, Listen, Strukturen.
WebseitenEdge, Chrome und Firefox während des Debuggens – Visual Studio öffnet ein Webprojekt oft in dem Browser, der bereits läuft. Die Einheiten sind CSS-Pixel. Der Schalter „Web“ im Bereich schaltet sie aus.

Nicht unterstützt: WinUI, UWP und MAUI. Ein benutzerdefiniertes Steuerelement, das keinen Automation-Peer erstellt, ist für UI Automation unsichtbar, und stattdessen wird sein Container gemessen.

Einstellungen

Extras → Optionen → SmithWorks → RulerSmith. Jede Option hat eine Beschreibung.

OptionStandard
Zum Messen haltenCtrl+Shift
Beim Debuggen messenein
Bildschirmpixel auf skalierten Anzeigen zeigenein
Erscheinen animierenein
Abstandspfeile aus dem Steuerelement wachsen lassenein
Um eine Bewertung im Marketplace bittenein

Die Einstellungen werden in %LocalAppData%\RulerSmith gespeichert.

Optionsseite von RulerSmith
Die Optionsseite.

FAQ

Sendet RulerSmith Daten?

Nein. Alles geschieht auf Ihrem Computer: Ein kleiner Überlagerungsprozess liest die Steuerelemente über UI Automation und zeichnet auf den Bildschirm. Keine Netzwerkanfragen, keine Telemetrie.

Umrandet wird nur das ganze Fenster (oder ein großer Bereich). Warum?

Die App stellt die Steuerelemente darin nicht für UI Automation bereit – meist benutzerdefinierte Steuerelemente ohne Automation-Peer. Wenn Sie in einem solchen Steuerelement OnCreateAutomationPeer überschreiben, wird es messbar und auch für Sprachausgaben zugänglich.

Wenn ich die Taste halte, wird nichts gezeichnet.

Prüfen Sie, ob eine Debugsitzung läuft und nicht angehalten ist und ob die Statuszeile des Bereichs Messen anzeigt. Eine Art von App kann im Bereich ausgeschaltet sein. Ein anderes Programm verwendet vielleicht dieselben Tasten: Wählen Sie in den Einstellungen eine andere Kombination.

Warum hält es an einem Haltepunkt an?

Eine angehaltene App kann UI Automation nicht antworten. Die Überlagerung ruht, bis Sie fortsetzen (F5).

Werden WinUI, UWP oder MAUI unterstützt?

Vorerst nicht. Wenn Sie sie brauchen, sagen Sie es im Repository Feedback.

Kann ich eine App ohne Visual Studio messen?

Ja: Starten Sie RulerSmith.Overlay.exe aus dem Ordner der Erweiterung. Es sitzt im Infobereich und misst jedes Fenster, solange die Taste gehalten wird.

Wo melde ich ein Problem oder schlage eine Funktion vor?

Erstellen Sie ein Issue im Repository Feedback auf GitHub – dort gibt es Formulare für Fehler und Ideen (bitte ändern Sie vertrauliche Namen). Sie können auch die Registerkarte „Q&A“ im Marketplace verwenden.

Änderungsprotokoll

1.0.2

1.0.1

1.0.0