# 验证扇形文字走向:水平文字 → 白色水平笔画段占优;旧径向布局 → 对角笔画段占优 # 并校验图标位置:新布局图标在文字上方(旧布局图标朝外侧/下方) $ErrorActionPreference = 'Stop' Add-Type -AssemblyName System.Drawing $bmp = [System.Drawing.Bitmap]::FromFile((Resolve-Path 'artifacts\wheel-light.png')) # 3 项配置:扇形中点 -30°/90°/210°,中半径 145 $regions = @( @{ Name = '扇形0(右上, 旧布局=对角60°)'; X = 328; Y = 168; W = 132; H = 57 }, @{ Name = '扇形1(下方, 旧布局=倒置水平)'; X = 204; Y = 385; W = 128; H = 55 }, @{ Name = '扇形2(左侧, 旧布局=对角-60°)'; X = 77; Y = 168; W = 132; H = 57 } ) function Is-White($px) { return $px.A -gt 200 -and ($px.R + $px.G + $px.B) -gt 700 } foreach ($r in $regions) { $x0 = $r.X; $y0 = $r.Y; $w = $r.W; $h = $r.H $white = New-Object 'bool[,]' ($h + 2), ($w + 2) $topN = 0; $midN = 0; $botN = 0 for ($y = 0; $y -lt $h; $y++) { for ($x = 0; $x -lt $w; $x++) { $isWhite = Is-White ($bmp.GetPixel($x0 + $x, $y0 + $y)) $white[$y, $x] = $isWhite if ($isWhite) { if ($y -lt [int]($h / 3)) { $topN++ } elseif ($y -lt [int](2 * $h / 3)) { $midN++ } else { $botN++ } } } } $hRuns = 0; $vRuns = 0; $d1Runs = 0; $d2Runs = 0 for ($y = 0; $y -lt $h; $y++) { $len = 0 for ($x = 0; $x -le $w; $x++) { if ($x -lt $w -and $white[$y, $x]) { $len++ } else { if ($len -ge 4) { $hRuns++ }; $len = 0 } } } for ($x = 0; $x -lt $w; $x++) { $len = 0 for ($y = 0; $y -le $h; $y++) { if ($y -lt $h -and $white[$y, $x]) { $len++ } else { if ($len -ge 4) { $vRuns++ }; $len = 0 } } } for ($s = 0; $s -lt ($w + $h - 1); $s++) { $len = 0 for ($y = 0; $y -lt $h; $y++) { $x = $s - $y if ($x -ge 0 -and $x -lt $w) { if ($white[$y, $x]) { $len++ } else { if ($len -ge 4) { $d1Runs++ }; $len = 0 } } } if ($len -ge 4) { $d1Runs++ } } for ($s = -($h - 1); $s -lt $w; $s++) { $len = 0 for ($x = 0; $x -lt $w; $x++) { $y = $x - $s if ($y -ge 0 -and $y -lt $h) { if ($white[$y, $x]) { $len++ } else { if ($len -ge 4) { $d2Runs++ }; $len = 0 } } } if ($len -ge 4) { $d2Runs++ } } Write-Output ("{0}" -f $r.Name) Write-Output (" 笔画段: 水平={0} 垂直={1} 对角45={2} 对角-45={3} (水平文字期望: 水平占优, 对角极少)" -f $hRuns, $vRuns, $d1Runs, $d2Runs) Write-Output (" 白色像素分布 上/中/下 = {0}/{1}/{2} (新布局期望: 上段为图标密集, 下段为文字)" -f $topN, $midN, $botN) } $bmp.Dispose()