public void AddChartStyle2D(Graphics g, ChartStyle cs3d, Axes ax, Grid gd, ChartLabels cl) { SetPlotArea(g, cs3d, cl, ax); Pen aPen = new Pen(Color.Black, 1f); SizeF tickFontSize = g.MeasureString("A", cl.TickFont); // Create vertical gridlines: float fX, fY; if (gd.IsYGrid == true) { aPen = new Pen(gd.GridStyle.LineColor, 1f); aPen.DashStyle = gd.GridStyle.Pattern; for (fX = ax.XMin + ax.XTick; fX < ax.XMax; fX += ax.XTick) { g.DrawLine(aPen, Point2D(new PointF(fX, ax.YMin), ax), Point2D(new PointF(fX, ax.YMax), ax)); } } // Create horizontal gridlines: if (gd.IsXGrid == true) { aPen = new Pen(gd.GridStyle.LineColor, 1f); aPen.DashStyle = gd.GridStyle.Pattern; for (fY = ax.YMin + ax.YTick; fY < ax.YMax; fY += ax.YTick) { g.DrawLine(aPen, Point2D(new PointF(ax.XMin, fY),ax), Point2D(new PointF(ax.XMax, fY),ax)); } } // Create the x-axis tick marks: for (fX = ax.XMin; fX <= ax.XMax; fX += ax.XTick) { PointF yAxisPoint = Point2D(new PointF(fX, ax.YMin), ax); g.DrawLine(Pens.Black, yAxisPoint, new PointF(yAxisPoint.X, yAxisPoint.Y - 5f)); } // Create the y-axis tick marks: for (fY = ax.YMin; fY <= ax.YMax; fY += ax.YTick) { PointF xAxisPoint = Point2D(new PointF(ax.XMin, fY), ax); g.DrawLine(Pens.Black, xAxisPoint, new PointF(xAxisPoint.X + 5f, xAxisPoint.Y)); } aPen.Dispose(); }
public Chart3D() { InitializeComponent(); this.SetStyle(ControlStyles.ResizeRedraw, true); cs = new ChartStyle(this); cs2d = new ChartStyle2D(this); dc = new DrawChart(this); ds = new DataSeries(); ax = new Axes(this); va = new ViewAngle(this); gd = new Grid(this); cl = new ChartLabels(this); gd.GridStyle.LineColor = Color.LightGray; this.BackColor = Color.White; cm = new ColorMap(); dc.CMap = cm.Jet(); }
private void AddGrids(Graphics g, Axes ax, ViewAngle va, Grid gd, ChartLabels cl) { Matrix3 m = Matrix3.AzimuthElevation(va.Elevation, va.Azimuth); Point3[] pta = new Point3[3]; Point3[] pts = CoordinatesOfChartBox(ax, va); Pen aPen = new Pen(gd.GridStyle.LineColor, gd.GridStyle.Thickness); aPen.DashStyle = gd.GridStyle.Pattern; // Draw x gridlines: if (gd.IsXGrid) { for (float x = ax.XMin; x <= ax.XMax; x = x + ax.XTick) { pts = CoordinatesOfChartBox(ax, va); pta[0] = new Point3(x, pts[1].Y, pts[1].Z, pts[1].W); if (va.Elevation >= 0) { if ((va.Azimuth >= -180 && va.Azimuth < -90) || (va.Azimuth >= 0 && va.Azimuth < 90)) { pta[1] = new Point3(x, pts[0].Y, pts[1].Z, pts[1].W); pta[2] = new Point3(x, pts[0].Y, pts[3].Z, pts[1].W); } else { pta[1] = new Point3(x, pts[2].Y, pts[1].Z, pts[1].W); pta[2] = new Point3(x, pts[2].Y, pts[3].Z, pts[1].W); } } else if (va.Elevation < 0) { if ((va.Azimuth >= -180 && va.Azimuth < -90) || (va.Azimuth >= 0 && va.Azimuth < 90)) { pta[1] = new Point3(x, pts[2].Y, pts[1].Z, pts[1].W); pta[2] = new Point3(x, pts[2].Y, pts[3].Z, pts[1].W); } else { pta[1] = new Point3(x, pts[0].Y, pts[1].Z, pts[1].W); pta[2] = new Point3(x, pts[0].Y, pts[3].Z, pts[1].W); } } for (int i = 0; i < pta.Length; i++) { pta[i].Transform(m, chart3d, ax, this, cl); } g.DrawLine(aPen, pta[0].X, pta[0].Y, pta[1].X, pta[1].Y); g.DrawLine(aPen, pta[1].X, pta[1].Y, pta[2].X, pta[2].Y); } } // Draw y gridlines: if (gd.IsYGrid) { for (float y = ax.YMin; y <= ax.YMax; y = y + ax.YTick) { pts = CoordinatesOfChartBox(ax, va); pta[0] = new Point3(pts[1].X, y, pts[1].Z, pts[1].W); if (va.Elevation >= 0) { if ((va.Azimuth >= -180 && va.Azimuth < -90) || (va.Azimuth >= 0 && va.Azimuth < 90)) { pta[1] = new Point3(pts[2].X, y, pts[1].Z, pts[1].W); pta[2] = new Point3(pts[2].X, y, pts[3].Z, pts[1].W); } else { pta[1] = new Point3(pts[0].X, y, pts[1].Z, pts[1].W); pta[2] = new Point3(pts[0].X, y, pts[3].Z, pts[1].W); } } if (va.Elevation < 0) { if ((va.Azimuth >= -180 && va.Azimuth < -90) || (va.Azimuth >= 0 && va.Azimuth < 90)) { pta[1] = new Point3(pts[0].X, y, pts[1].Z, pts[1].W); pta[2] = new Point3(pts[0].X, y, pts[3].Z, pts[1].W); } else { pta[1] = new Point3(pts[2].X, y, pts[1].Z, pts[1].W); pta[2] = new Point3(pts[2].X, y, pts[3].Z, pts[1].W); } } for (int i = 0; i < pta.Length; i++) { pta[i].Transform(m, chart3d, ax, this, cl); } g.DrawLine(aPen, pta[0].X, pta[0].Y, pta[1].X, pta[1].Y); g.DrawLine(aPen, pta[1].X, pta[1].Y, pta[2].X, pta[2].Y); } } // Draw Z gridlines: if (gd.IsZGrid) { for (float z = ax.ZMin; z <= ax.ZMax; z = z + ax.ZTick) { pts = CoordinatesOfChartBox(ax, va); pta[0] = new Point3(pts[2].X, pts[2].Y, z, pts[2].W); if (va.Elevation >= 0) { if ((va.Azimuth >= -180 && va.Azimuth < -90) || (va.Azimuth >= 0 && va.Azimuth < 90)) { pta[1] = new Point3(pts[2].X, pts[0].Y, z, pts[1].W); pta[2] = new Point3(pts[0].X, pts[0].Y, z, pts[1].W); } else { pta[1] = new Point3(pts[0].X, pts[2].Y, z, pts[1].W); pta[2] = new Point3(pts[0].X, pts[1].Y, z, pts[1].W); } } if (va.Elevation < 0) { if ((va.Azimuth >= -180 && va.Azimuth < -90) || (va.Azimuth >= 0 && va.Azimuth < 90)) { pta[1] = new Point3(pts[0].X, pts[2].Y, z, pts[1].W); pta[2] = new Point3(pts[0].X, pts[0].Y, z, pts[1].W); } else { pta[1] = new Point3(pts[2].X, pts[0].Y, z, pts[1].W); pta[2] = new Point3(pts[0].X, pts[0].Y, z, pts[1].W); } } for (int i = 0; i < pta.Length; i++) { pta[i].Transform(m, chart3d, ax, this, cl); } g.DrawLine(aPen, pta[0].X, pta[0].Y, pta[1].X, pta[1].Y); g.DrawLine(aPen, pta[1].X, pta[1].Y, pta[2].X, pta[2].Y); } } }
public void AddChartStyle(Graphics g, Axes ax, ViewAngle va, Grid gd, ChartLabels cl) { AddTicks(g, ax, va, cl); AddGrids(g, ax, va, gd, cl); AddAxes(g, ax, va, cl); AddLabels(g, ax, va, cl); }