RulerSmith
디버깅 중인 앱 위에서 Ctrl+Shift를 누르고 있으면 포인터 아래 컨트롤에 크기가 표시되고, 부드러운 화살표가 주변 컨트롤까지의 거리를 보여 줍니다. 키를 떼면 사라집니다.
무료 · Visual Studio 2022 및 2026 · UI 14개 언어 · 원격 분석 없음
RulerSmith를 쓰는 이유

추측이 아닌 실제 경계
크기는 화면 읽기 프로그램이 사용하는 트리인 UI Automation에서 가져오므로, 픽셀 눈금자처럼 그림자, 그라데이션, 앤티앨리어싱에 속지 않습니다.
코드에 쓰는 단위 그대로
WPF와 웹 페이지는 장치 독립적 단위로 레이아웃됩니다. 76 × 32는 XAML이나 CSS에 쓰는 값 그대로이며, 화면 픽셀(200 %에서 152 × 64)은 그 아래에 표시됩니다.
키를 누르고 있는 동안만
키를 누르기 전에는 아무것도 계산하거나 그리지 않습니다. 오버레이는 클릭이나 포커스를 가져가지 않으며, 디버거가 일시 중지된 동안에는 쉽니다.
조건 없는 무료
구독, ‘Pro’ 버전, 데이터 수집이 없고 출력 창이나 시작 시 메시지도 없습니다. 부탁드리는 것은 단 하나, 어느 정도 사용해 보신 뒤 Marketplace에 평가를 남겨 주시는 것뿐입니다. Visual Studio 2022 및 2026, x64 및 ARM64에서 작동합니다.
기능
- 포인터 아래 컨트롤의 크기와 종류(Button, ComboBox…)를 앱 단위로, 배율이 조정된 디스플레이에서는 화면 픽셀로도 표시합니다.
- 이웃 컨트롤까지의 간격: 각 방향에서 가장 가까운 컨트롤, 없으면 컨테이너 가장자리까지 — 손으로 그릴 법한 바로 그 선입니다.
- 모니터별 DPI: 모니터마다 배율을 반영하며, WinForms 및 Win32 앱은 DPI 인식 여부와 관계없이 앱 자체의 픽셀로 측정합니다.
- RulerSmith 패널: 컨트롤의 이름과 automation id, 크기, 위치, 간격과 그 끝에 있는 대상; 측정 및 앱 종류별 스위치.
- 부드러운 등장: 윤곽선이 서서히 나타난 뒤 화살표가 컨트롤에서 뻗어 나갑니다 — 한꺼번에 표시하거나 애니메이션 없이 표시할 수도 있습니다.
- 디버그 세션과 연동: F5로 시작되고, 디버깅 중인 앱(및 WebView2나 웹 프로젝트의 브라우저처럼 앱이 여는 것)만 측정하며, 세션과 함께 중지됩니다.
측정
디버깅을 시작하고 Ctrl+Shift를 누른 채 앱 위로 포인터를 움직이세요. 새 컨트롤에 윤곽선이 그려지고, 그 아래에 크기가 나타나며, 간격 화살표가 이웃 컨트롤까지 뻗어 나갑니다. 숫자는 포인터를 따라 컨트롤에서 컨트롤로 이동합니다.

| 화면 표시 | 의미 |
|---|---|
| 가는 윤곽선 | 포인터 아래 컨트롤의 경계. 단추 안의 텍스트나 아이콘은 단추로 간주됩니다. |
| Button 76 × 32 152 × 64 px · 200 % | 종류와 앱 단위의 크기. 배율이 조정된 디스플레이에서는 둘째 줄에 화면 픽셀과 배율이 표시됩니다. |
| 실선 화살표 | 그 방향에서 가장 가까운 컨트롤까지의 간격. 맞닿은 컨트롤에는 화살표가 표시되지 않습니다. |
| 점선 화살표 | 그 방향에 컨트롤이 없음: 컨테이너(창의 클라이언트 영역) 가장자리까지의 간격. |
RulerSmith 패널
디버그 → RulerSmith 패널(보기 → 다른 창에도 있음). 도구 모음에서 측정을 켜고 끕니다 — 디버그 도구 모음의 레이아웃 측정과 같은 스위치입니다 — 앱 종류별로도 따로 켜고 끌 수 있습니다: WPF, WinForms, Win32, Web. 그 아래에는 마지막 측정 결과가 표시됩니다: 컨트롤의 이름과 automation id(XAML에서 컨트롤을 찾을 때 유용), 크기, 창 내 위치, 그리고 각 간격과 그 끝에 있는 컨트롤. 상태 줄은 아무것도 그려지지 않는 이유를 알려 줍니다: 디버깅 중 아님, 중단점에서 일시 중지됨, 측정 꺼짐.

지원 앱
RulerSmith는 UI Automation을 통해 컨트롤을 읽으므로, 앱이 거기에 노출하는 것을 측정합니다 — 표준 컨트롤은 기본적으로 노출합니다.
| 앱 | 참고 |
|---|---|
| WPF | 단위는 장치 독립적입니다. Visual Studio가 디버깅 중인 WPF 앱 위에 띄우는 반투명 XAML 도구 모음은 건너뛰며, 탭의 내용도 찾아냅니다. |
| Windows Forms | 단위는 앱의 픽셀입니다: DPI 인식 앱은 1:1, 그렇지 않은 앱은 Windows가 늘려서 표시합니다. |
| Win32, MFC | CreateWindow로 만든 창과 리소스의 대화 상자: 단추, 편집 상자, 콤보 상자, 목록, 트리. |
| 웹 페이지 | 디버깅 중인 Edge, Chrome, Firefox — Visual Studio는 웹 프로젝트를 이미 실행 중인 브라우저에서 여는 경우가 많습니다. 단위는 CSS 픽셀입니다. 패널의 Web 스위치로 끌 수 있습니다. |
지원되지 않음: WinUI, UWP, MAUI. automation peer를 만들지 않는 사용자 지정 컨트롤은 UI Automation에 보이지 않으므로 대신 그 컨테이너가 측정됩니다.
설정
도구 → 옵션 → SmithWorks → RulerSmith. 모든 옵션에 설명이 있습니다.
| 옵션 | 기본값 |
|---|---|
| 누르고 있는 동안 측정 | Ctrl+Shift |
| 디버깅 중 측정 | 켜짐 |
| 배율이 조정된 디스플레이에서 화면 픽셀 표시 | 켜짐 |
| 나타날 때 애니메이션 효과 사용 | 켜짐 |
| 간격 화살표를 컨트롤에서 뻗어 나오게 표시 | 켜짐 |
| Marketplace 평가 요청 | 켜짐 |
설정은 %LocalAppData%\RulerSmith에 저장됩니다.

자주 묻는 질문
RulerSmith는 데이터를 전송하나요?
아니요. 모든 작업은 사용자의 컴퓨터에서 이루어집니다: 작은 오버레이 프로세스가 UI Automation을 통해 컨트롤을 읽고 화면에 그립니다. 네트워크 요청도, 원격 분석도 없습니다.
창 전체(또는 큰 패널)에만 윤곽선이 그려집니다. 왜 그런가요?
앱이 내부 컨트롤을 UI Automation에 노출하지 않기 때문입니다 — 대개 automation peer가 없는 사용자 지정 컨트롤입니다. 그런 컨트롤에서 OnCreateAutomationPeer를 재정의하면 측정할 수 있게 되고, 화면 읽기 프로그램에서도 접근할 수 있게 됩니다.
키를 눌러도 아무것도 그려지지 않습니다.
디버그 세션이 실행 중이고 일시 중지되지 않았는지, 패널의 상태 줄에 측정 중이라고 표시되는지 확인하세요. 패널에서 앱 종류가 꺼져 있을 수도 있습니다. 다른 프로그램이 같은 키를 사용할 수도 있으니, 설정에서 다른 조합을 선택하세요.
중단점에서 왜 멈추나요?
일시 중지된 앱은 UI Automation에 응답할 수 없습니다. 계속(F5)할 때까지 오버레이는 쉽니다.
WinUI, UWP 또는 MAUI도 지원될 예정인가요?
지금은 아닙니다. 필요하다면 Feedback 리포지토리에 알려 주세요.
Visual Studio 없이 앱을 측정할 수 있나요?
예: 확장 폴더에서 RulerSmith.Overlay.exe를 실행하세요. 알림 영역에 머물면서 키를 누르고 있는 동안 어떤 창이든 측정합니다.
문제를 보고하거나 기능을 제안하려면 어디로 가야 하나요?
GitHub의 Feedback 리포지토리에 이슈를 등록하세요. 버그와 아이디어를 위한 양식이 있습니다(비공개 이름은 바꿔 주세요). Marketplace의 Q&A 탭을 이용할 수도 있습니다.
변경 내역
1.0.2
- 확장이 유용하게 쓰인 뒤 한 번만 Marketplace 평가를 요청합니다. 나중에와 다시 묻지 않음을 고를 수 있고, 옵션으로 끌 수도 있습니다.
1.0.1
- 설정에 “Marketplace에서 평가” 링크를 추가했습니다.
1.0.0
- 첫 공개 릴리스.