Skip to content

Commit 9ff98de

Browse files
committed
ViewerCanvas.CalculateZoomFactor(): use DrawingArea instead of control size
1 parent 40219e9 commit 9ff98de

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

Source/Components/ImageGlass.Views/ViewerCanvas.cs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,20 +2171,29 @@ public void SetZoomFactor(float zoomValue, bool isManualZoom)
21712171
}
21722172

21732173

2174+
/// <summary>
2175+
/// Calculates zoom factor by the input zoom mode, and source size.
2176+
/// </summary>
2177+
public float CalculateZoomFactor(ZoomMode zoomMode, float srcWidth, float srcHeight)
2178+
{
2179+
return CalculateZoomFactor(zoomMode, srcWidth, srcHeight, (int)DrawingArea.Width, (int)DrawingArea.Height);
2180+
}
2181+
2182+
21742183
/// <summary>
21752184
/// Calculates zoom factor by the input zoom mode, and source size.
21762185
/// </summary>
21772186
public float CalculateZoomFactor(ZoomMode zoomMode, float srcWidth, float srcHeight, int viewportW, int viewportH)
21782187
{
2179-
if (srcWidth == 0 || srcHeight == 0) return _zoomFactor;
2188+
if (srcWidth == 0 || srcHeight == 0
2189+
|| viewportW == 0 || viewportH == 0) return _zoomFactor;
21802190

2181-
var horizontalPadding = Padding.Left + Padding.Right;
2182-
var verticalPadding = Padding.Top + Padding.Bottom;
2183-
var widthScale = (viewportW - horizontalPadding) / srcWidth;
2184-
var heightScale = (viewportH - verticalPadding) / srcHeight;
21852191

2192+
var widthScale = viewportW / srcWidth;
2193+
var heightScale = viewportH / srcHeight;
21862194
float zoomFactor;
21872195

2196+
21882197
if (zoomMode == ZoomMode.ScaleToWidth)
21892198
{
21902199
zoomFactor = widthScale;
@@ -2228,10 +2237,12 @@ public float CalculateZoomFactor(ZoomMode zoomMode, float srcWidth, float srcHei
22282237
/// </summary>
22292238
public void SetZoomMode(ZoomMode? mode = null, bool isManualZoom = false, bool zoomedByResizing = false)
22302239
{
2240+
if (DrawingArea.IsEmpty) return;
2241+
2242+
22312243
// get zoom factor after applying the zoom mode
2232-
var zoomMode = mode ?? _zoomMode;
2233-
_zoomMode = zoomMode;
2234-
_zoomFactor = CalculateZoomFactor(zoomMode, SourceWidth, SourceHeight, Width, Height);
2244+
_zoomMode = mode ?? _zoomMode;
2245+
_zoomFactor = CalculateZoomFactor(_zoomMode, SourceWidth, SourceHeight);
22352246
_isManualZoom = isManualZoom;
22362247

22372248
// update drawing regions
@@ -2241,7 +2252,7 @@ public void SetZoomMode(ZoomMode? mode = null, bool isManualZoom = false, bool z
22412252
if (UseWebview2)
22422253
{
22432254
var obj = new ExpandoObject();
2244-
_ = obj.TryAdd("ZoomMode", zoomMode.ToString());
2255+
_ = obj.TryAdd("ZoomMode", _zoomMode.ToString());
22452256
_ = obj.TryAdd("IsManualZoom", isManualZoom);
22462257

22472258
Web2.PostWeb2Message(Web2BackendMsgNames.SET_ZOOM_MODE, BHelper.ToJson(obj));

Source/ImageGlass/FrmMain.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1237,7 +1237,7 @@ public void ShowImagePreview(string filePath, CancellationToken token = default)
12371237
}
12381238
else
12391239
{
1240-
var zoomFactor = PicMain.CalculateZoomFactor(Config.ZoomMode, Local.Metadata.RenderedWidth, Local.Metadata.RenderedHeight, PicMain.Width, PicMain.Height);
1240+
var zoomFactor = PicMain.CalculateZoomFactor(Config.ZoomMode, Local.Metadata.RenderedWidth, Local.Metadata.RenderedHeight);
12411241

12421242
previewSize = new((int)(Local.Metadata.RenderedWidth * zoomFactor), (int)(Local.Metadata.RenderedHeight * zoomFactor));
12431243
}

Source/ImageGlass/ImageGlass.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<Description>A lightweight, versatile image viewer</Description>
1515
<Copyright>Copyright © 2010 - 2025 Duong Dieu Phap</Copyright>
1616
<Company>Duong Dieu Phap</Company>
17-
<Version>9.2.1.324-beta</Version>
17+
<Version>9.2.1.330-beta</Version>
1818
<FileVersion>$(Version)</FileVersion>
1919

2020
<EntryPointExe>$(AssemblyName).exe</EntryPointExe>

0 commit comments

Comments
 (0)