LazowskiAnton · Extensions

RulerSmith

在正在偵錯的應用程式上按住 Ctrl+Shift:指標下的控制項會顯示其大小,柔和的箭頭顯示與周圍控制項的距離。放開按鍵,一切隨即消失。

免費 · Visual Studio 2022 和 2026 · 14 種介面語言 · 無遙測

為什麼選擇 RulerSmith

同一個表單在沒有和有 RulerSmith 時的對比:按鈕的外框、大小以及與相鄰控制項的間距

真實的界限,而非猜測

大小來自 UI Automation(螢幕助讀程式使用的同一棵樹),因此陰影、漸層和消除鋸齒不會像騙過像素尺規那樣騙過它。

您所寫的單位

WPF 和網頁以與裝置無關的單位配置版面:76 × 32 就是您在 XAML 或 CSS 中寫的值,螢幕像素(200 % 下為 152 × 64)顯示在其下方。

只在按住按鍵時運作

在您按住按鍵之前,不進行任何計算或繪製。覆疊層從不接收按一下或焦點,偵錯工具暫停時它也會停下。

免費,沒有附加條件

沒有訂閱、沒有「Pro」版、不收集資料,也不會在「輸出」視窗或啟動時顯示訊息。我們唯一的請求是:在你用過一段時間之後,到 Marketplace 給個評分。支援 Visual Studio 2022 和 2026,x64 和 ARM64。

功能

測量

開始偵錯,按住 Ctrl+Shift,將指標移到應用程式上。新的控制項會顯示外框,其下方顯示大小,間距箭頭延伸到相鄰控制項;數字隨指標從一個控制項移到另一個控制項。

顯示外框的 Save 按鈕,以及其大小和到 Cancel、註解方塊和視窗邊緣的間距
螢幕上顯示意義
細外框指標下控制項的界限。按鈕內的文字或圖示算作按鈕本身。
Button 76 × 32
152 × 64 px · 200 %
類型和以應用程式單位表示的大小;在縮放的顯示器上,第二行顯示螢幕像素和縮放比例。
實線箭頭到該側最近控制項的間距。相互接觸的控制項不顯示箭頭。
虛線箭頭該側沒有控制項:到容器邊緣(視窗的工作區)的間距。

RulerSmith 面板

偵錯 → RulerSmith 面板(也位於 檢視 → 其他視窗)。工具列可開啟和關閉測量——與「偵錯」工具列上的 測量版面配置 是同一個開關——也可以分別控制每類應用程式:WPF、WinForms、Win32、Web。下方是最近一次測量:控制項的名稱和自動化識別碼(可據此在 XAML 中找到該控制項)、大小、在視窗中的位置,以及每個間距和它終止於的控制項。狀態列說明為什麼沒有繪製任何內容:未在偵錯、在中斷點暫停,或測量已關閉。

RulerSmith 面板,顯示已測量的 Save 按鈕及其大小和間距

支援哪些應用程式

RulerSmith 透過 UI Automation 讀取控制項,因此它測量的是應用程式在其中公開的內容——標準控制項預設就會公開。

應用程式說明
WPF單位與裝置無關。Visual Studio 覆疊在正在偵錯的 WPF 應用程式上的半透明 XAML 工具列會被略過;索引標籤中的內容可以找到。
Windows Forms單位是應用程式的像素:支援 DPI 感知的應用程式為 1:1,不支援的應用程式由 Windows 延展。
Win32, MFC使用 CreateWindow 建立的視窗和來自資源的對話方塊:按鈕、編輯方塊、下拉式方塊、清單、樹狀結構。
網頁偵錯時的 Edge、Chrome 和 Firefox——Visual Studio 經常在已執行的瀏覽器中開啟 Web 專案。單位是 CSS 像素。面板中的 Web 開關可將其關閉。

不支援:WinUI、UWP 和 MAUI。不建立自動化對等的自訂控制項對 UI Automation 不可見,此時測量的是它的容器。

設定

工具 → 選項 → SmithWorks → RulerSmith。每個選項都有說明。

選項預設值
按住以測量Ctrl+Shift
偵錯時測量開啟
在縮放的顯示器上顯示螢幕像素開啟
出現時使用動畫開啟
間距箭頭從控制項向外延伸開啟
請求在 Marketplace 上評分開啟

設定儲存在 %LocalAppData%\RulerSmith 中。

RulerSmith 選項頁面
選項頁面。

常見問題

RulerSmith 會傳送資料嗎?

不會。一切都在您的電腦上進行:一個小型覆疊層處理序透過 UI Automation 讀取控制項並在螢幕上繪製。沒有網路要求,沒有遙測。

為什麼只有整個視窗(或一個大面板)顯示外框?

應用程式沒有向 UI Automation 公開其中的控制項——通常是沒有自動化對等的自訂控制項。在這類控制項中覆寫 OnCreateAutomationPeer 即可使其可測量,同時也讓螢幕助讀程式可以存取。

按住按鍵時什麼都沒有繪製。

請檢查偵錯工作階段是否正在執行且未暫停,以及面板的狀態列是否顯示 正在測量。某類應用程式可能已在面板中關閉。其他程式可能使用了相同的按鍵:請在設定中選擇其他按鍵組合。

為什麼在中斷點會停止?

暫停的應用程式無法回應 UI Automation。覆疊層會停下,直到您繼續(F5)。

將來會支援 WinUI、UWP 或 MAUI 嗎?

暫時不會。如果您需要,請在 Feedback 存放庫中告訴我們。

可以在沒有 Visual Studio 的情況下測量應用程式嗎?

可以:執行延伸模組資料夾中的 RulerSmith.Overlay.exe。它常駐在通知區域,在按住按鍵時測量任何視窗。

要在哪裡回報問題或提出功能建議?

請在 GitHub 上的 Feedback 存放庫中建立 issue——那裡有用於回報錯誤和提出建議的表單(如有私密名稱,請先替換)。也可以使用 Marketplace 上的 Q&A 索引標籤。

變更記錄

1.0.2

1.0.1

1.0.0