RulerSmith
Tieni premuto Ctrl+Shift sopra l’app di cui stai eseguendo il debug: il controllo sotto il puntatore mostra le sue dimensioni e frecce discrete indicano le distanze dai controlli circostanti. Rilascia i tasti e tutto scompare.
Gratuito · Visual Studio 2022 e 2026 · 14 lingue dell’interfaccia · nessuna telemetria
Perché RulerSmith

Limiti reali, non una stima
Le dimensioni provengono da UI Automation, l’albero usato dalle utilità per la lettura dello schermo: ombre, sfumature e anti-aliasing non lo ingannano, come invece accade con un righello a pixel.
Le unità che scrivi
WPF e le pagine web dispongono gli elementi in unità indipendenti dal dispositivo: 76 × 32 è ciò che scrivi in XAML o CSS, e i pixel dello schermo (152 × 64 al 200 %) sono mostrati sotto.
Solo finché tieni premuto il tasto
Non viene calcolato né disegnato nulla finché non tieni premuto il tasto. La sovrapposizione non riceve mai clic né lo stato attivo e resta inattiva mentre il debugger è in pausa.
Gratuito, senza condizioni
Nessun abbonamento, nessuna versione «pro», nessuna raccolta di dati, nessun messaggio nella finestra Output o all’avvio. L’unica cosa che ti chiederemo — dopo che l’avrai usata per un po’ — è una valutazione sul Marketplace. Funziona con Visual Studio 2022 e 2026, x64 e ARM64.
Funzionalità
- Le dimensioni del controllo sotto il puntatore con il suo tipo (Button, ComboBox…), nelle unità dell’app e in pixel dello schermo su un display con ridimensionamento.
- Distanze dai controlli vicini: il controllo più vicino su ogni lato o, se non ce n’è, il bordo del contenitore: le linee che tracceresti a mano.
- DPI per monitor: si tiene conto del ridimensionamento di ogni monitor; le app WinForms e Win32 sono misurate nei loro pixel, che supportino i DPI o no.
- Il pannello RulerSmith: il nome e l’automation id del controllo, le sue dimensioni, la posizione e le distanze con ciò a cui arrivano; interruttori per la misurazione e per ogni tipo di app.
- Una comparsa discreta: il contorno appare in dissolvenza, poi le frecce escono dal controllo; oppure tutto insieme, o nessuna animazione.
- Legato alla sessione di debug: parte con F5, misura solo l’app sottoposta a debug (e ciò che apre, come WebView2 o il browser di un progetto web) e si ferma con la sessione.
Misurazione
Avvia il debug, tieni premuto Ctrl+Shift e muovi il puntatore sopra l’app. Un nuovo controllo viene evidenziato da un contorno, sotto compaiono le sue dimensioni e le distanze si estendono verso i controlli vicini; i numeri seguono il puntatore da un controllo all’altro.

| Sullo schermo | Significato |
|---|---|
| Contorno sottile | I limiti del controllo sotto il puntatore. Il testo o un’icona all’interno di un pulsante contano come il pulsante. |
| Button 76 × 32 152 × 64 px · 200 % | Il tipo e le dimensioni nelle unità dell’app; su un display con ridimensionamento, i pixel dello schermo e la scala su una seconda riga. |
| Freccia continua | La distanza dal controllo più vicino su quel lato. I controlli che si toccano non mostrano frecce. |
| Freccia tratteggiata | Nessun controllo su quel lato: la distanza dal bordo del contenitore (l’area client di una finestra). |
Il pannello RulerSmith
Debug → Pannello RulerSmith (anche in Visualizza → Altre finestre). La barra degli strumenti attiva e disattiva la misurazione, lo stesso interruttore di Misura layout sulla barra degli strumenti Debug, e ogni tipo di app separatamente: WPF, WinForms, Win32, Web. Sotto, l’ultima misurazione: il nome e l’automation id del controllo (per trovarlo in XAML), le sue dimensioni, la posizione nella finestra e ogni distanza con il controllo a cui arriva. La riga di stato spiega perché non viene disegnato nulla: nessun debug in corso, pausa su un punto di interruzione o misurazione disattivata.

Quali app
RulerSmith legge i controlli tramite UI Automation, quindi misura ciò che l’app espone lì, ovvero quello che i controlli standard fanno già di serie.
| App | Note |
|---|---|
| WPF | Le unità sono indipendenti dal dispositivo. La barra degli strumenti XAML trasparente che Visual Studio sovrappone a un’app WPF in debug viene ignorata; il contenuto delle schede viene trovato. |
| Windows Forms | Le unità sono i pixel dell’app: 1:1 per un’app che supporta i DPI, adattati da Windows per una che non li supporta. |
| Win32, MFC | Finestre create con CreateWindow e finestre di dialogo dalle risorse: pulsanti, caselle di modifica, caselle combinate, elenchi, alberi. |
| Pagine web | Edge, Chrome e Firefox durante il debug: Visual Studio apre spesso un progetto web nel browser già in esecuzione. Le unità sono i pixel CSS. L’interruttore Web nel pannello le disattiva. |
Non supportati: WinUI, UWP e MAUI. Un controllo personalizzato che non crea un automation peer è invisibile per UI Automation, e al suo posto viene misurato il contenitore.
Impostazioni
Strumenti → Opzioni → SmithWorks → RulerSmith. Ogni opzione ha una descrizione.
| Opzione | Predefinito |
|---|---|
| Tieni premuto per misurare | Ctrl+Shift |
| Misura durante il debug | attivo |
| Mostra i pixel dello schermo sui display con ridimensionamento | attivo |
| Anima la comparsa | attivo |
| Fai uscire le frecce delle distanze dal controllo | attivo |
| Chiedi una valutazione sul Marketplace | attivo |
Le impostazioni sono salvate in %LocalAppData%\RulerSmith.

FAQ
RulerSmith invia dati?
No. Tutto avviene sul tuo computer: un piccolo processo di sovrapposizione legge i controlli tramite UI Automation e disegna sullo schermo. Nessuna richiesta di rete, nessuna telemetria.
Viene evidenziata solo l’intera finestra (o un pannello grande). Perché?
L’app non espone a UI Automation i controlli al suo interno: di solito si tratta di controlli personalizzati senza automation peer. Eseguendo l’override di OnCreateAutomationPeer in un controllo di questo tipo, diventa misurabile e anche accessibile alle utilità per la lettura dello schermo.
Non viene disegnato nulla quando tengo premuto il tasto.
Verifica che una sessione di debug sia in corso e non in pausa, e che la riga di stato del pannello indichi Misurazione. Un tipo di app potrebbe essere disattivato nel pannello. Un altro programma potrebbe usare gli stessi tasti: scegli un’altra combinazione nelle impostazioni.
Perché si ferma a un punto di interruzione?
Un’app in pausa non può rispondere a UI Automation. La sovrapposizione resta inattiva finché non continui (F5).
WinUI, UWP o MAUI saranno supportati?
Per ora no. Se ti servono, dillo nel repository Feedback.
Posso misurare un’app senza Visual Studio?
Sì: avvia RulerSmith.Overlay.exe dalla cartella dell’estensione. Resta nell’area di notifica e misura qualsiasi finestra finché il tasto è premuto.
Dove segnalo un problema o suggerisco una funzionalità?
Apri una issue nel repository Feedback su GitHub: ci sono moduli per bug e idee (cambia i nomi privati). Puoi anche usare la scheda Q&A nel Marketplace.
Registro modifiche
1.0.2
- Una richiesta di valutazione sul Marketplace, una sola volta, dopo che l’estensione è stata utile — con Più tardi e Non chiedere più, e un’opzione per disattivarla.
1.0.1
- Link «Valuta nel Marketplace» nelle impostazioni.
1.0.0
- Prima versione pubblica.