Files
One_click_run_wpf/scripts/analyze-hub.ps1
T

49 lines
2.4 KiB
PowerShell

# 验证轮盘中心文本居中:标题像素包围盒应关于画布中心 (268,268) 对称,且状态间完全一致
$ErrorActionPreference = 'Stop'
Add-Type -AssemblyName System.Drawing
function Measure-Hub($path, [string]$mode) {
$bmp = [System.Drawing.Bitmap]::FromFile((Resolve-Path $path))
$cx = 268; $cy = 268; $hubR = 54
$darkN = 0; $darkX = 0.0; $darkY = 0.0
$darkMinX = 9999; $darkMaxX = -1; $darkMinY = 9999; $darkMaxY = -1
$grayN = 0; $grayX = 0.0; $grayY = 0.0
for ($y = $cy - $hubR; $y -le $cy + $hubR; $y++) {
for ($x = $cx - $hubR; $x -le $cx + $hubR; $x++) {
$dx = $x - $cx; $dy = $y - $cy
if ($dx * $dx + $dy * $dy -gt $hubR * $hubR) { continue }
$px = $bmp.GetPixel($x, $y)
if ($px.A -lt 200) { continue }
$sum = $px.R + $px.G + $px.B
if ($mode -eq 'light') {
if ($sum -lt 330) {
$darkN++; $darkX += $x; $darkY += $y
if ($x -lt $darkMinX) { $darkMinX = $x }; if ($x -gt $darkMaxX) { $darkMaxX = $x }
if ($y -lt $darkMinY) { $darkMinY = $y }; if ($y -gt $darkMaxY) { $darkMaxY = $y }
}
elseif ($sum -ge 300 -and $sum -le 420) { $grayN++; $grayX += $x; $grayY += $y }
} else {
if ($sum -gt 560) {
$darkN++; $darkX += $x; $darkY += $y
if ($x -lt $darkMinX) { $darkMinX = $x }; if ($x -gt $darkMaxX) { $darkMaxX = $x }
if ($y -lt $darkMinY) { $darkMinY = $y }; if ($y -gt $darkMaxY) { $darkMaxY = $y }
}
elseif ($sum -ge 430 -and $sum -le 560) { $grayN++; $grayX += $x; $grayY += $y }
}
}
}
$bmp.Dispose()
$bboxCX = if ($darkN -gt 0) { ($darkMinX + $darkMaxX) / 2.0 } else { -1 }
Write-Output (" TitlePixelCount={0} BboxX=[{1},{2}] BboxCenterX={3} (期望268) BboxY=[{4},{5}]" -f $darkN, $darkMinX, $darkMaxX, [Math]::Round($bboxCX, 2), $darkMinY, $darkMaxY)
Write-Output (" HintPixelCount={0} HintCenterX={1} (供参考)" -f $grayN, $(if ($grayN -gt 0) { [Math]::Round($grayX / $grayN, 2) } else { -1 }))
}
foreach ($file in 'wheel-light.png', 'wheel-light-hover.png') {
Write-Output "=== $file ==="
Measure-Hub "artifacts\$file" 'light'
}
foreach ($file in 'wheel-dark.png', 'wheel-dark-hover.png') {
Write-Output "=== $file ==="
Measure-Hub "artifacts\$file" 'dark'
}