RulerSmith
Maintenez Ctrl+Shift au-dessus de l’application que vous déboguez : le contrôle sous le pointeur affiche sa taille, et de discrètes flèches montrent les distances aux contrôles qui l’entourent. Relâchez, et tout disparaît.
Gratuit · Visual Studio 2022 et 2026 · 14 langues d’interface · aucune télémétrie
Pourquoi RulerSmith

De vraies limites, pas une estimation
Les tailles viennent d’UI Automation — l’arborescence qu’utilisent les lecteurs d’écran —, si bien que les ombres, les dégradés et l’anticrénelage ne la trompent pas comme ils trompent une règle à pixels.
Les unités que vous écrivez
WPF et les pages web utilisent des unités indépendantes du périphérique : 76 × 32 est ce que vous écrivez en XAML ou en CSS, et les pixels d’écran (152 × 64 à 200 %) s’affichent en dessous.
Seulement quand la touche est maintenue
Rien n’est calculé ni dessiné tant que vous ne maintenez pas la touche. La superposition ne prend jamais un clic ni le focus, et se met en pause quand le débogueur est suspendu.
Gratuit, sans contrepartie
Ni abonnement, ni version « pro », ni collecte de données, ni messages dans la fenêtre Sortie ou au démarrage. La seule chose que nous vous demanderons — quand vous l’aurez utilisée pendant un certain temps — c’est une note sur le Marketplace. Fonctionne avec Visual Studio 2022 et 2026, x64 et ARM64.
Fonctionnalités
- La taille du contrôle sous le pointeur avec son type (Button, ComboBox…), dans les unités de l’application et, sur un affichage mis à l’échelle, en pixels d’écran.
- Les espacements jusqu’aux voisins : le contrôle le plus proche de chaque côté, ou le bord du conteneur s’il n’y en a pas — les lignes que vous traceriez à la main.
- PPP par moniteur : l’échelle de chaque moniteur est prise en compte, et les applications WinForms et Win32 sont mesurées dans leurs propres pixels, qu’elles prennent en charge les PPP ou non.
- Le panneau RulerSmith : le nom et l’automation id du contrôle, sa taille, sa position et ses espacements avec l’élément où ils s’arrêtent ; des interrupteurs pour la mesure et pour chaque type d’application.
- Une apparition en douceur : le contour apparaît en fondu, puis les flèches sortent du contrôle — ou tout en même temps, ou sans aucune animation.
- Lié à la session de débogage : démarre avec F5, ne mesure que l’application déboguée (et ce qu’elle ouvre, comme WebView2 ou le navigateur d’un projet web) et s’arrête avec la session.
Mesure
Lancez le débogage, maintenez Ctrl+Shift et déplacez le pointeur sur l’application. Un nouveau contrôle est entouré, sa taille apparaît en dessous et les espacements s’étendent jusqu’aux voisins ; les chiffres suivent le pointeur de contrôle en contrôle.

| À l’écran | Signification |
|---|---|
| Contour fin | Les limites du contrôle sous le pointeur. Le texte ou l’icône à l’intérieur d’un bouton comptent comme le bouton. |
| Button 76 × 32 152 × 64 px · 200 % | Le type et la taille dans les unités de l’application ; sur un affichage mis à l’échelle, les pixels d’écran et l’échelle sur une deuxième ligne. |
| Flèche pleine | L’espacement jusqu’au contrôle le plus proche de ce côté. Des contrôles qui se touchent n’affichent pas de flèche. |
| Flèche en pointillés | Aucun contrôle de ce côté : l’espacement jusqu’au bord du conteneur (la zone cliente d’une fenêtre). |
Le panneau RulerSmith
Déboguer → Panneau RulerSmith (aussi dans Affichage → Autres fenêtres). La barre d’outils active et désactive la mesure — le même interrupteur que Mesurer la disposition dans la barre d’outils Déboguer — et chaque type d’application séparément : WPF, WinForms, Win32, Web. En dessous, la dernière mesure : le nom et l’automation id du contrôle (il permet de le retrouver dans le XAML), sa taille, sa position dans la fenêtre et chaque espacement avec le contrôle où il s’arrête. La ligne d’état indique pourquoi rien n’est dessiné : pas de débogage, suspendu à un point d’arrêt, ou mesure désactivée.

Quelles applications
RulerSmith lit les contrôles via UI Automation : il mesure donc ce que l’application y expose — ce que font d’office les contrôles standard.
| Application | Remarques |
|---|---|
| WPF | Les unités sont indépendantes du périphérique. La barre d’outils XAML transparente que Visual Studio superpose à une application WPF déboguée est ignorée ; le contenu des onglets est trouvé. |
| Windows Forms | Les unités sont les pixels de l’application : 1:1 pour une application compatible PPP, étirés par Windows pour une application qui ne l’est pas. |
| Win32, MFC | Fenêtres créées avec CreateWindow et boîtes de dialogue issues des ressources : boutons, zones de texte, zones de liste déroulante, listes, arborescences. |
| Pages web | Edge, Chrome et Firefox pendant le débogage — Visual Studio ouvre souvent un projet web dans le navigateur déjà en cours d’exécution. Les unités sont les pixels CSS. L’interrupteur Web du panneau les désactive. |
Non pris en charge : WinUI, UWP et MAUI. Un contrôle personnalisé qui ne crée pas d’automation peer est invisible pour UI Automation, et c’est son conteneur qui est mesuré à la place.
Paramètres
Outils → Options → SmithWorks → RulerSmith. Chaque option est décrite.
| Option | Par défaut |
|---|---|
| Maintenir pour mesurer | Ctrl+Shift |
| Mesurer pendant le débogage | activé |
| Afficher les pixels d’écran sur les affichages mis à l’échelle | activé |
| Animer l’apparition | activé |
| Faire sortir les flèches d’espacement du contrôle | activé |
| Demander une note sur le Marketplace | activé |
Les paramètres sont stockés dans %LocalAppData%\RulerSmith.

FAQ
RulerSmith envoie-t-il des données ?
Non. Tout se passe sur votre ordinateur : un petit processus de superposition lit les contrôles via UI Automation et dessine à l’écran. Aucune requête réseau, aucune télémétrie.
Seule la fenêtre entière (ou un grand panneau) est entourée. Pourquoi ?
L’application n’expose pas à UI Automation les contrôles qu’elle contient — en général des contrôles personnalisés sans automation peer. Substituer OnCreateAutomationPeer dans un tel contrôle le rend mesurable, et accessible aux lecteurs d’écran aussi.
Rien ne s’affiche quand je maintiens la touche.
Vérifiez qu’une session de débogage est en cours et non suspendue, et que la ligne d’état du panneau indique Mesure en cours. Un type d’application est peut-être désactivé dans le panneau. Un autre programme utilise peut-être les mêmes touches : choisissez une autre combinaison dans les paramètres.
Pourquoi s’arrête-t-il à un point d’arrêt ?
Une application suspendue ne peut pas répondre à UI Automation. La superposition se met en pause jusqu’à ce que vous continuiez (F5).
WinUI, UWP ou MAUI seront-ils pris en charge ?
Pas pour l’instant. Si vous en avez besoin, dites-le dans le dépôt Feedback.
Puis-je mesurer une application sans Visual Studio ?
Oui : lancez RulerSmith.Overlay.exe depuis le dossier de l’extension. Il se place dans la zone de notification et mesure n’importe quelle fenêtre tant que la touche est maintenue.
Où signaler un problème ou proposer une fonctionnalité ?
Ouvrez un ticket dans le dépôt Feedback sur GitHub — il y a des formulaires pour les bogues et les idées (modifiez les noms confidentiels). Vous pouvez aussi utiliser l’onglet Q&A sur le Marketplace.
Historique des versions
1.0.2
- Une demande de note unique sur le Marketplace, une fois que l’extension a été utile — avec Plus tard et Ne plus demander, et une option pour la désactiver.
1.0.1
- Lien « Évaluer sur le Marketplace » dans les paramètres.
1.0.0
- Première version publique.