Created
January 23, 2016 22:25
-
-
Save amithegde/895a2b468bb23745ce2a to your computer and use it in GitHub Desktop.
Quick and easy helper to render chars in LinqPad
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Query Kind="Program"> | |
<Reference><RuntimeDirectory>\System.Windows.Forms.DataVisualization.dll</Reference> | |
<Reference><RuntimeDirectory>\System.Windows.Forms.dll</Reference> | |
<Namespace>System.Windows.Forms.DataVisualization.Charting</Namespace> | |
<Namespace>System.Drawing</Namespace> | |
<Namespace>System.Windows.Forms</Namespace> | |
</Query> | |
void Main() | |
{ | |
new LpChart(series: GetSeries(), chartType: SeriesChartType.Column, width: 1250).Dump(); | |
new LpChart(series: GetSeries(), chartType: SeriesChartType.Line, width: 1250).Dump(); | |
new LpChart(series: GetSeries(), chartType: SeriesChartType.Bar, width: 500).Dump(); | |
} | |
private ChartSeries GetSeries() | |
{ | |
var items = Enumerable.Range(1, 25).Select(x => string.Format("item-{0}", x)); | |
var rand = new Random(100); | |
var prices = items.Select(x => rand.NextDouble()); | |
return new ChartSeries { XSeries = items.ToList(), YSeries = prices.ToList() }; | |
} | |
public class ChartSeries | |
{ | |
public IList<string> XSeries { get; set; } | |
public IList<double> YSeries { get; set; } | |
} | |
public class LpChart | |
{ | |
public Chart Chart { get; private set; } | |
public ChartArea ChartArea { get; private set; } | |
public Series Series { get; private set; } | |
public Bitmap Bitmap { get; private set; } | |
public LpChart(ChartSeries series, SeriesChartType chartType = SeriesChartType.Column, int width = 1200) | |
{ | |
this.Chart = new Chart(); | |
this.ChartArea = new ChartArea(); | |
this.Chart.ChartAreas.Add(this.ChartArea); | |
this.Series = new Series(); | |
this.Series.ChartType = chartType; | |
this.Series.Points.DataBindXY(series.XSeries.ToArray(), series.YSeries.ToArray()); | |
this.Chart.Series.Add(this.Series); | |
this.Chart.Width = width; | |
this.Bitmap = new Bitmap(width: this.Chart.Width, height: this.Chart.Height); | |
} | |
public void Dump() | |
{ | |
this.Chart.DrawToBitmap(this.Bitmap, this.Chart.Bounds); | |
this.Bitmap.Dump(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment