|
public class CustomChartRenderer : SfChartRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<SfChart> e)
{
base.OnElementChanged(e);
}
public override SfChartExt CreateNativeChart()
{
return new CustomChart(Android.App.Application.Context);
}
}
public class CustomChart : SfChartExt
{
public CustomChart(Android.Content.Context context) : base(context)
{
}
protected override Native.ChartSeries CreateNativeChartSeries(ChartSeries formSeries)
{
if (formSeries is StackingColumnSeries)
{
return new CustomStackingColumSeries();
}
return base.CreateNativeChartSeries(formSeries);
}
}
public class CustomStackingColumSeries : Native.StackingColumnSeries
{
protected override Native.ChartSegment CreateSegment()
{
return new CustomStackingColumSegment();
}
}
public class CustomStackingColumSegment : Native.ColumnSegment
{
RectF rect = new RectF();
Paint paint = new Paint();
public override void OnDraw(Canvas canvas)
{
canvas.Save();
base.OnDraw(canvas);
canvas.Restore();
paint.Color = Android.Graphics.Color.Blue;
paint.StrokeWidth = 8 ;
paint.SetStyle(Paint.Style.Fill);
canvas.Save();
canvas.DrawLine(Left, Top, Right, Top, paint);
canvas.Restore();
}
} |
|
public class CustomChartRenderer : SfChartRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<SfChart> e)
{
base.OnElementChanged(e);
}
public override Native.SFChart CreateNativeChart()
{
return new CustomChart();
}
}
public class CustomChart : Native.SFChart
{
protected override Native.SFSeries CreateNativeChartSeries(ChartSeries formSeries)
{
if(formSeries is StackingColumnSeries)
{
return new CustomStackingColumSeries();
}
return base.CreateNativeChartSeries(formSeries);
}
}
public class CustomStackingColumSeries : Native.SFStackingColumnSeries
{
protected override Native.SFChartSegment CreateSegment()
{
return new CustomStackingColumSegment();
}
}
public class CustomStackingColumSegment : Native.SFColumnSegment
{
public override void DrawSegment(CGContext context)
{
base.DrawSegment(context);
context.SaveState();
UIColor color = UIColor.Blue;
context.SetStrokeColor(color.CGColor);
context.SetLineWidth(4);
context.MoveTo(Left,Top);
context.AddLineToPoint(Right, Top);
context.ClosePath();
context.DrawPath(CGPathDrawingMode.FillStroke);
context.RestoreState();
}
} |
|
<Application.Resources>
<ResourceDictionary>
<DataTemplate x:Key="template">
<Canvas>
<Border Background="{Binding Interior}" Canvas.Left="{Binding RectX}" Canvas.Top="{Binding RectY}" Width="{Binding Width}" Height="{Binding Height}" BorderThickness="0,5,0,0" BorderBrush="Blue" />
</Canvas>
</DataTemplate>
</ResourceDictionary>
</Application.Resources> |
|
class CustomChartRenderer : SfChartRenderer
{
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
for (int i = 0;i < Control.Series.Count;i++)
{
StackingColumnSeries series = Control.Series[i] as StackingColumnSeries;
series.CustomTemplate= App.Current.Resources["template"] as Windows.UI.Xaml.DataTemplate;
}
}
} |