mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +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
@@ -500,7 +500,7 @@ begin
|
||||
|
||||
// Битмап держим в физических пикселях канвы, иначе Cocoa растянет его вдвое
|
||||
// и картинка замылится. На Windows/Linux FScale=1 и всё как было.
|
||||
FScale := GetScreenScale;
|
||||
FScale := GetControlScale(PB);
|
||||
BmpW := W * FScale; BmpH := H * FScale;
|
||||
|
||||
if (FSmBitmap = nil) or (FSmBitmap.Width <> BmpW) or (FSmBitmap.Height <> BmpH) then
|
||||
|
||||
Reference in New Issue
Block a user