@@ -130,6 +130,13 @@ public float SerieLabelTextSize
130130 set => Set ( ref serieLabelTextSize , value ) ;
131131 }
132132
133+ /// <summary>
134+ /// Determines whether pinch to zoom will work on the chart
135+ /// </summary>
136+ public bool EnableZoom { get ; set ; } = false ;
137+
138+ public ChartXForm XForm { get ; } = new ChartXForm ( ) ;
139+
133140 /// <summary>
134141 /// Show Y Axis Text?
135142 /// </summary>
@@ -162,7 +169,10 @@ public float SerieLabelTextSize
162169 public SKPaint YAxisLinesPaint { get ; set ; }
163170
164171
165- public ChartXForm XForm { get ; } = new ChartXForm ( ) ;
172+ /// <summary>
173+ /// How many labels to draw, -1 means all of them
174+ /// </summary>
175+ public int XAxisMaxLabels { get ; set ; } = - 1 ;
166176
167177 #endregion
168178
@@ -188,7 +198,8 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
188198 float minValue = InternalMinValue . HasValue ? InternalMinValue . Value : MinValue ;
189199
190200 //This function might change the min/max value
191- var yAxisSize = MeasureHelper . CalculateYAxis ( ShowYAxisText , ShowYAxisLines , entries , YAxisMaxTicks , YAxisTextPaint , YAxisPosition , width , fixedRange , ref maxValue , ref minValue , out float yAxisXShift , out List < float > yAxisIntervalLabels ) ;
201+ int yMaxTicks = ( int ) ( YAxisMaxTicks * XForm . Scale ) ;
202+ var yAxisSize = MeasureHelper . CalculateYAxis ( ShowYAxisText , ShowYAxisLines , entries , yMaxTicks , YAxisTextPaint , YAxisPosition , width , fixedRange , ref maxValue , ref minValue , out float yAxisXShift , out List < float > yAxisIntervalLabels ) ;
192203 width = ( int ) yAxisSize . Width ;
193204
194205 float valRange = maxValue - minValue ;
@@ -238,7 +249,7 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
238249 */
239250
240251 canvas . Save ( ) ;
241- canvas . ClipRect ( yAxisRect ) ;
252+ if ( EnableZoom ) canvas . ClipRect ( yAxisRect ) ;
242253 DrawHelper . DrawYAxis ( ShowYAxisText , ShowYAxisLines , YAxisPosition , YAxisTextPaint , YAxisLinesPaint , XForm . Offset , XForm . Scale , Margin , AnimationProgress , maxValue , valRange , canvas , width , yAxisXShift , yAxisIntervalLabels , headerHeight , itemSize , origin ) ;
243254 canvas . Restore ( ) ;
244255
@@ -252,9 +263,11 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
252263 int entryCount = entries . Count ( ) ;
253264
254265 canvas . Save ( ) ;
255- canvas . ClipRect ( labelRect ) ;
266+ if ( EnableZoom ) canvas . ClipRect ( labelRect ) ;
256267
257- for ( int i = 0 ; i < labels . Length ; i ++ )
268+ int xMaxLabels = ( int ) ( XAxisMaxLabels * XForm . Scale ) ;
269+ int xlabelSkip = XAxisMaxLabels > 0 ? labels . Length / xMaxLabels : 1 ;
270+ for ( int i = 0 ; i < labels . Length ; i += xlabelSkip )
258271 {
259272 var itemX = Margin + ( itemSize . Width / 2 ) + ( i * ( itemSize . Width + Margin ) ) + yAxisXShift ;
260273 float labelX = XForm . Offset . X + ( itemX * XForm . Scale ) ;
@@ -269,9 +282,13 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
269282 canvas . Restore ( ) ;
270283
271284 canvas . Save ( ) ;
272- canvas . ClipRect ( chartRect ) ;
273- canvas . Translate ( XForm . Offset ) ;
274- canvas . Scale ( XForm . Scale ) ;
285+ if ( EnableZoom )
286+ {
287+ canvas . ClipRect ( chartRect ) ;
288+ canvas . Translate ( XForm . Offset ) ;
289+ canvas . Scale ( XForm . Scale ) ;
290+ }
291+
275292 for ( int i = 0 ; i < labels . Length ; i ++ )
276293 {
277294 if ( i >= entryCount ) break ;
@@ -304,9 +321,12 @@ public override void DrawContent(SKCanvas canvas, int width, int height)
304321 DrawLegend ( canvas , seriesSizes , legendHeight , height , width ) ;
305322
306323 canvas . Save ( ) ;
307- canvas . ClipRect ( chartRect ) ;
308- canvas . Translate ( XForm . Offset ) ;
309- canvas . Scale ( XForm . Scale ) ;
324+ if ( EnableZoom )
325+ {
326+ canvas . ClipRect ( chartRect ) ;
327+ canvas . Translate ( XForm . Offset ) ;
328+ canvas . Scale ( XForm . Scale ) ;
329+ }
310330 OnDrawContentEnd ( canvas , itemSize , origin , valueLabelSizes ) ;
311331 canvas . Restore ( ) ;
312332 }
0 commit comments