mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
fix(macos): масштаб канвы берём у окна контрола, а не у главного экрана
backingScaleFactor главного экрана врёт, когда окно лежит на другом мониторе. Спрашиваем масштаб у NSWindow того NSView, которому принадлежит паинтбокс: это ровно то число, в котором Cocoa рисует эту канву, и оно меняется само при перетаскивании окна между мониторами. Objective-C по-прежнему живёт только в MacScale; наружу торчит кроссплатформенная GetControlScale, которая на Windows/Linux сворачивается в Result := 1. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -343,7 +343,7 @@ begin
|
||||
if (W <= 0) or (H <= 0) then Exit;
|
||||
|
||||
// Битмап в физических пикселях канвы, иначе Cocoa растянет его и замылит.
|
||||
FScale := GetScreenScale;
|
||||
FScale := GetControlScale(FPb);
|
||||
BmpW := W * FScale; BmpH := H * FScale;
|
||||
if (FBmp.Width <> BmpW) or (FBmp.Height <> BmpH) then FBmp.SetSize(BmpW, BmpH);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user