using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; using Eventech.Utils.Images; namespace TProduct.PumpGraph.Picture { public partial class ZlpFeatChart1 { private void DrawAxisX() { var gridSpaceWidthX = (float)(this._chartDiagram.Width / (_coordinateParas.AxisLabelQ.Count - 1));//X轴上格子的宽度 double coorminQ = _coordinateParas.AxisLabelQ[0];//最小显示值 double coordspace = _coordinateParas.AxisLabelQ[1] - coorminQ;//一个格子代表的数值15 //X坐标显示刻度 bool isInteralDisap = true; if (gridSpaceWidthX > 10) { if (this._imageTotalWidth > 900 && coordspace < 1000) { isInteralDisap = false; } } StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; //水平居中 sf.LineAlignment = StringAlignment.Near; //垂直上对齐 using (System.Drawing.Pen pen_majorTick = new System.Drawing.Pen(_gridLineColorH, GridLineWidth)) using (System.Drawing.Pen pen_gridLine = new System.Drawing.Pen(_gridLineColorX, _gridLineWidthX)) using (var font = new System.Drawing.Font("Arial", _axisLabelSizeX, System.Drawing.FontStyle.Regular)) using (var brush = new System.Drawing.SolidBrush(Color.Black)) { for (int i = 0; i < _coordinateParas.AxisLabelQ.Count; i++) { double kedu_d = _coordinateParas.AxisLabelQ[i]; var map_x = (float)((kedu_d - _coordinateParas.AxisLabelQ.First()) * _chartDiagram.Width / (_coordinateParas.AxisLabelQ.Last() - _coordinateParas.AxisLabelQ.First())) + _chartDiagram.Left; //MapRealToPictQ(kedu_d); if (_isDispGridLineX) { PointF startYgeziPt = new PointF(map_x, _chartDiagram.Top); PointF endYgeziPt = new PointF(map_x, _chartDiagram.Bottom); _graphics.DrawLine(pen_gridLine, startYgeziPt, endYgeziPt); } PointF startPt_marjor = new PointF(map_x, _chartDiagram.Bottom); PointF endPt_marjor = new PointF(map_x, _chartDiagram.Bottom + _axisMajorTickLength); _graphics.DrawLine(pen_majorTick, startPt_marjor, endPt_marjor); if (isInteralDisap) i = i + 1; string kedu_str = kedu_d.ToString(); _graphics.DrawString(kedu_str, font, brush, new PointF(map_x, _chartDiagram.Bottom + _axisLabelSpaceToDiagramQ), sf); } } //画X坐标说明,流量(L/s) string title = null; if (_coordinateParas.UnitQ == Eventech.Model.UnitQ.M3H) title = TranslateString("流量") + "(m³/h)"; else if (_coordinateParas.UnitQ == Eventech.Model.UnitQ.Ft3H) title = TranslateString("流量") + "(ft³/h)"; else if (_coordinateParas.UnitQ == Eventech.Model.UnitQ.Ft3Min) title = TranslateString("流量") + "(ft³/min)"; else if (_coordinateParas.UnitQ == Eventech.Model.UnitQ.LS) title = TranslateString("流量") + "(L/s)"; else if (_coordinateParas.UnitQ == Eventech.Model.UnitQ.M3Min) title = TranslateString("流量") + "(m³/min)"; else if (_coordinateParas.UnitQ == Eventech.Model.UnitQ.USGalMin) title = TranslateString("流量") + "(USGal/Min)"; else if (_coordinateParas.UnitQ == Eventech.Model.UnitQ.LmpGalMin) title = TranslateString("流量") + "(LmpGal/Min)"; PointF posi_title = new PointF(); posi_title.X = (this._chartDiagram.Left + _diagramRightBottomPt.X) / 2; posi_title.Y = this._chartDiagram.Bottom + _axisTitleSpaceToDiagramQ; using (var font = new System.Drawing.Font("Arial", AxisTitleTextSizeQ, System.Drawing.FontStyle.Regular)) using (var brush = new System.Drawing.SolidBrush(AxisTitleTextColorQ)) { StringFormat sf_title = new StringFormat(); sf_title.Alignment = StringAlignment.Center; //水平居中 sf_title.LineAlignment = StringAlignment.Near; //垂直上对齐 _graphics.DrawString(title, font, brush, posi_title, sf_title); } } } }