@@ -108,7 +108,6 @@ public partial class ViewerCanvas : DXCanvas
108108 private AnimatorSource _animatorSource = AnimatorSource . None ;
109109 private ImgAnimator ? _imgAnimator = null ;
110110 private AnimationSource _animationSource = AnimationSource . None ;
111- private bool _shouldRecalculateDrawingRegion = true ;
112111
113112 // Navigation buttons
114113 private DXButtonStates _navLeftState = DXButtonStates . Normal ;
@@ -175,7 +174,9 @@ public int PaddingLeft
175174 set
176175 {
177176 Padding = new Padding ( value , Padding . Top , Padding . Right , Padding . Bottom ) ;
178- _shouldRecalculateDrawingRegion = true ;
177+
178+ // update drawing regions
179+ CalculateDrawingRegion ( ) ;
179180 Refresh ( ! _isManualZoom ) ;
180181 }
181182 }
@@ -191,7 +192,9 @@ public int PaddingTop
191192 set
192193 {
193194 Padding = new Padding ( Padding . Left , value , Padding . Right , Padding . Bottom ) ;
194- _shouldRecalculateDrawingRegion = true ;
195+
196+ // update drawing regions
197+ CalculateDrawingRegion ( ) ;
195198 Refresh ( ! _isManualZoom ) ;
196199 }
197200 }
@@ -207,7 +210,9 @@ public int PaddingRight
207210 set
208211 {
209212 Padding = new Padding ( Padding . Left , Padding . Top , value , Padding . Bottom ) ;
210- _shouldRecalculateDrawingRegion = true ;
213+
214+ // update drawing regions
215+ CalculateDrawingRegion ( ) ;
211216 Refresh ( ! _isManualZoom ) ;
212217 }
213218 }
@@ -223,7 +228,9 @@ public int PaddingBottom
223228 set
224229 {
225230 Padding = new Padding ( Padding . Left , Padding . Top , Padding . Right , value ) ;
226- _shouldRecalculateDrawingRegion = true ;
231+
232+ // update drawing regions
233+ CalculateDrawingRegion ( ) ;
227234 Refresh ( ! _isManualZoom ) ;
228235 }
229236 }
@@ -1477,7 +1484,8 @@ protected override void OnMouseLeave(EventArgs e)
14771484
14781485 protected override void OnResize ( EventArgs e )
14791486 {
1480- _shouldRecalculateDrawingRegion = true ;
1487+ // update drawing regions
1488+ CalculateDrawingRegion ( ) ;
14811489
14821490 // redraw the control on resizing if it's not manual zoom
14831491 if ( IsReady && Source != ImageSource . Null && ! _isManualZoom )
@@ -1545,10 +1553,6 @@ protected override void OnRender(DXGraphics g)
15451553 g . DrawRectangle ( ClientRectangle , 0 , Color . Transparent , BackColor ) ;
15461554 }
15471555
1548-
1549- // update drawing regions
1550- CalculateDrawingRegion ( ) ;
1551-
15521556 // checkerboard background
15531557 DrawCheckerboardLayer ( g ) ;
15541558
@@ -1633,7 +1637,7 @@ protected override void OnRender(DXGraphics g)
16331637 /// </summary>
16341638 protected virtual void CalculateDrawingRegion ( )
16351639 {
1636- if ( Source == ImageSource . Null || _shouldRecalculateDrawingRegion is false ) return ;
1640+ if ( Source == ImageSource . Null ) return ;
16371641
16381642 var zoomX = _zoommedPoint . X ;
16391643 var zoomY = _zoommedPoint . Y ;
@@ -1711,8 +1715,6 @@ protected virtual void CalculateDrawingRegion()
17111715 _yOut = true ;
17121716 _srcRect . Y = 0 ;
17131717 }
1714-
1715- _shouldRecalculateDrawingRegion = false ;
17161718 }
17171719
17181720
@@ -2143,7 +2145,9 @@ public void SetZoomFactor(float zoomValue, bool isManualZoom)
21432145 return ;
21442146 }
21452147
2146- _shouldRecalculateDrawingRegion = true ;
2148+ // update drawing regions
2149+ CalculateDrawingRegion ( ) ;
2150+
21472151 Invalidate ( ) ;
21482152
21492153 OnZoomChanged ? . Invoke ( this , new ZoomEventArgs ( )
@@ -2219,8 +2223,9 @@ public void SetZoomMode(ZoomMode? mode = null, bool isManualZoom = false, bool z
22192223 _zoomMode = zoomMode ;
22202224 _zoomFactor = CalculateZoomFactor ( zoomMode , SourceWidth , SourceHeight , Width , Height ) ;
22212225 _isManualZoom = isManualZoom ;
2222- _shouldRecalculateDrawingRegion = true ;
22232226
2227+ // update drawing regions
2228+ CalculateDrawingRegion ( ) ;
22242229
22252230 // use webview
22262231 if ( UseWebview2 )
@@ -2390,9 +2395,11 @@ public bool ZoomToPoint(float factor, PointF? point = null, bool requestRerender
23902395 if ( _zoomFactor != newZoomFactor )
23912396 {
23922397 _zoomFactor = Math . Min ( MaxZoom , Math . Max ( newZoomFactor , MinZoom ) ) ;
2393- _shouldRecalculateDrawingRegion = true ;
23942398 _isManualZoom = true ;
23952399
2400+ // update drawing regions
2401+ CalculateDrawingRegion ( ) ;
2402+
23962403 // if using Webview2
23972404 if ( UseWebview2 )
23982405 {
@@ -2499,10 +2506,12 @@ public bool ZoomByDeltaToPoint(float delta, PointF? point = null,
24992506
25002507 _oldZoomFactor = _zoomFactor ;
25012508 _zoomFactor = newZoomFactor ;
2502- _shouldRecalculateDrawingRegion = true ;
25032509 _isManualZoom = true ;
25042510 _zoommedPoint = location . ToVector2 ( ) ;
25052511
2512+ // update drawing regions
2513+ CalculateDrawingRegion ( ) ;
2514+
25062515 if ( UseWebview2 )
25072516 {
25082517 var newDelta = _zoomFactor / _oldZoomFactor ;
@@ -2625,8 +2634,6 @@ public bool PanTo(float hDistance, float vDistance, bool requestRerender = true)
26252634 }
26262635
26272636 _zoommedPoint = new ( ) ;
2628- _shouldRecalculateDrawingRegion = true ;
2629-
26302637
26312638 if ( _xOut == false )
26322639 {
@@ -2645,6 +2652,10 @@ public bool PanTo(float hDistance, float vDistance, bool requestRerender = true)
26452652 // emit panning event
26462653 Panning ? . Invoke ( this , new PanningEventArgs ( loc , new PointF ( _panHostFromPoint ) ) ) ;
26472654
2655+
2656+ // update drawing regions
2657+ CalculateDrawingRegion ( ) ;
2658+
26482659 if ( requestRerender )
26492660 {
26502661 Invalidate ( ) ;
0 commit comments