/// <summary> /// 绘图。 /// </summary> /// <param name="table"></param> /// <returns></returns> public Bitmap Draw(TwoNumeralKeyAndValueDictionary table, NumerialSegment valSpanForColor = null) { this.TableValue = table; if (table == null || table.Count == 0) { return(null); } if (ChartSize.Width == 0 || ChartSize.Height == 0) { return(null); } this.InputToContentCoordConverter = new PlainCoordConverter(table.KeySize, this.ContentSize, table.LeftDown); this.ColorBuilder = new ThreeStepColorBuilder(valSpanForColor ?? table.ValueSpan, Color.Blue, Color.Cyan, Color.Yellow, Color.Red); Bitmap bmp = new Bitmap(ChartSize.Width, ChartSize.Height);; Graphics g = Graphics.FromImage(bmp); g.Clear(Color.White); this.ChartGraphics = new Geo.Draw.UserChartGraphics(UserToScreenCoordConverter, g); DrawColorTable(table); DrawContentBoxBorder(); DrawYLabels(); DrawXLables(); DrawLegendColorBar(); return(bmp); }
/// <summary> /// 二维色彩绘图 /// </summary> /// <param name="table"></param> /// <param name="ValSpanForColor"></param> public TwoDimColorChartForm(TwoNumeralKeyAndValueDictionary table, NumerialSegment ValSpanForColor = null) { InitializeComponent(); this.table = table; Draw(table, ValSpanForColor); }
/// <summary> /// 构造函数 /// </summary> /// <param name="Span"></param> /// <param name="ColorFrom"></param> /// <param name="ColorTo"></param> public TwoStepColorBuilder(NumerialSegment Span, Color ColorFrom, Color ColorMiddle, Color ColorTo) { MidleValue = Span.Median; var segA = new NumerialSegment(Span.Start, MidleValue); var segB = new NumerialSegment(MidleValue, Span.End); ColorBuilderA = new ColorBuilder(segA, ColorFrom, ColorMiddle); ColorBuilderB = new ColorBuilder(segB, ColorMiddle, ColorTo); }
internal void Draw(TwoNumeralKeyAndValueDictionary table, NumerialSegment ValSpanForColor = null) { this.TwoNumeralKeyAndValueDictionary = table; this.ValSpanForColor = ValSpanForColor; this.ColorChartDrawer.Init(this.pictureBox1.Size); if (TwoNumeralKeyAndValueDictionary != null) { this.pictureBox1.Image = this.ColorChartDrawer.Draw(TwoNumeralKeyAndValueDictionary, ValSpanForColor); } }
/// <summary> /// 获取格网遍历器 /// </summary> /// <returns></returns> public GeoGridLooper GetGridLooper() { NumerialSegment LonSpan = LonSpanControl.GetValue(); NumerialSegment LatSpan = LatSpanControl.GetValue(); double LonStep = this.LonStepControl.Value / 60.0; double LatStep = this.LatStepControl.Value / 60.0; bool isLonDesc = this.checkBox_lonOrder.Checked; bool isLatDesc = this.checkBox_latOrder.Checked; bool isLatFirst = this.checkBox_latFirst.Checked; return(new GeoGridLooper(LonSpan, LonStep, LatSpan, LatStep, isLonDesc, isLatDesc, isLatFirst)); }
/// <summary> /// 构造函数 /// </summary> /// <param name="Span"></param> /// <param name="ColorFrom"></param> /// <param name="ColorTo"></param> public ThreeStepColorBuilder(NumerialSegment Span, Color ColorFrom, Color ColorMiddle, Color ColorMiddleB, Color ColorTo) { var smallSpan = Span.Span / 3.0; FistStep = Span.Start + smallSpan; SecondStep = Span.Start + smallSpan * 2; var segA = new NumerialSegment(Span.Start, Span.Start + smallSpan); var segB = new NumerialSegment(Span.Start + smallSpan, Span.Start + smallSpan * 2); var segC = new NumerialSegment(Span.Start + smallSpan * 2, Span.End); ColorBuilderA = new ColorBuilder(segA, ColorFrom, ColorMiddle); ColorBuilderB = new ColorBuilder(segB, ColorMiddle, ColorMiddleB); ColorBuilderC = new ColorBuilder(segC, ColorMiddleB, ColorTo); }
/// <summary> /// 构造函数 /// </summary> /// <param name="Span"></param> /// <param name="ColorFrom"></param> /// <param name="ColorTo"></param> public ColorBuilder(NumerialSegment Span, Color ColorFrom, Color ColorTo) { this.ColorFrom = ColorFrom; this.ColorTo = ColorTo; int argbFrom = ColorFrom.ToArgb(); int argbTo = ColorTo.ToArgb(); this.Span = Span; this.Alfa = 255; this.RedFrom = argbFrom >> 16 & 0XFF; this.GreenFrom = argbFrom >> 8 & 0XFF; this.BlueFrom = argbFrom & 0XFF; int redTo = argbTo >> 16 & 0XFF; int greenTo = argbTo >> 8 & 0XFF; int blueTo = argbTo & 0XFF; RedIngredient = (redTo - RedFrom) / this.Span.Span; BlueIngredient = (blueTo - BlueFrom) / this.Span.Span; GreenIngredient = (greenTo - GreenFrom) / this.Span.Span; }
/// <summary> /// 设置值 /// </summary> /// <param name="enabledVal"></param> public void SetValue(NumerialSegment enabledVal) { this.textBox_from.Text = enabledVal.Start + ""; this.textBox_to.Text = enabledVal.End + ""; }
/// <summary> /// 线性坐标转换器 /// </summary> /// <param name="fromScale"></param> /// <param name="toScale"></param> public LineCoordConverter(NumerialSegment fromScale, double toScale) { this.OldStartValue = fromScale.Start;; this.Factor = toScale / fromScale.Span; }
/// <summary> /// 绘图 /// </summary> /// <param name="table"></param> /// <param name="ValSpanForColor"></param> public void Draw(TwoNumeralKeyAndValueDictionary table, NumerialSegment ValSpanForColor = null) { this.chartControl1.Draw(table, ValSpanForColor); }