@@ -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 ) ) ;
0 commit comments