public void EventOccurred(IEventData data, EventType type) { var line = data as PathRenderInfo; if (line != null) { int op = line.GetOperation(); var color = GetColorNumber(line.GetStrokeColor()); float linewidth = line.GetLineWidth(); var path = line.GetPath(); var subpaths = path.GetSubpaths(); int count = subpaths.Count; // check for stroke if (op != 1) { return; } if (color < 2) { return; } // check the identity matrix (CTM) var ctm = line.GetCtm(); var sign_x = ctm.Get(0); var rot_x = ctm.Get(1); var zero_x = ctm.Get(2); var rot_y = ctm.Get(3); var sign_y = ctm.Get(4); var zero_y = ctm.Get(5); if (zero_x != 0 || zero_y != 0 || rot_x != 0 || rot_y != 0) { throw new InvalidOperationException(); } if (sign_x != 1 || sign_y != 1) { throw new InvalidOperationException(); } foreach (var subp in subpaths) { if (subp.IsEmpty() || subp.IsSinglePointOpen()) { continue; } if (!subp.IsClosed()) { PdfReaderException.AlwaysThrow("!subp.IsClosed()"); } var segs = subp.GetSegments() .SelectMany(s => s.GetBasePoints()) .ToArray(); float x1 = (float)segs.Min(s => s.x); float x2 = (float)segs.Max(s => s.x); float y1 = (float)segs.Min(s => s.y); float y2 = (float)segs.Max(s => s.y); float translate_x = ctm.Get(6); float translate_y = ctm.Get(7); var mark = new MarkLine() { X = x1 + translate_x, H = y1 + translate_y, Width = x2 - x1, Height = y2 - y1, LineWidth = linewidth, Color = color }; if (color < 2) { PdfReaderException.AlwaysThrow("Invalid color"); } if (mark.X < 0 || mark.H < 0) { PdfReaderException.AlwaysThrow("mark.X < 0 || mark.H < 0"); } _blockSet.Add(mark); } } }
public SeriesItem() { data = new List <double>(); markPoint = new MarkPoint(); markLine = new MarkLine(); }
/// <summary> /// 数据项初始化 /// </summary> /// <param name="option"></param> private void OptionSeries(Option option) { SeriesRectangle series = new SeriesRectangle { Name = "最高温度", Type = "line" }; MarkPoint mp = new MarkPoint(); MarkPointDataThree markPointData = new MarkPointDataThree { Type = "max", Name = "最大" }; MarkPointDataThree markPointDataT = new MarkPointDataThree { Type = "min", Name = "最小的值" }; mp.Data = new MarkPointData[] { markPointData, markPointDataT }; series.MarkPoint = mp; MarkLine ml = new MarkLine { //Data = new MarkLineData[] //{ // new MarkLineDataThree {Name = "最小", Type = "min"}, // new MarkLineDataThree {Name = "最大", Type = "max"}, // new MarkLineDataThree {Name = "平均", Type = "average"}, //}, DataGroup = new MarkLineData[, ] { { new MarkLineDataThree { Name = "最小", Type = "min" }, new MarkLineDataThree { Name = "最大", Type = "max" }, } }, }; series.MarkLine = ml; series.Data = new SeriesData[] { new SeriesDataOne { Value = "12" }, new SeriesDataOne { Value = "11" }, new SeriesDataOne { Value = "13" }, new SeriesDataOne { Value = "14" }, new SeriesDataOne { Value = "12" }, new SeriesDataOne { Value = "18" }, new SeriesDataOne { Value = "19" }, new SeriesDataOne { Value = "22" }, }; option.Series = new Series[] { series }; }