/// <summary> /// Инициализирует новый экземпляр класса /// </summary> /// <param name="View">Параметр для отображения</param> /// <param name="gView">График который отображает параметр</param> public GraphicPanelParameter(Parameter View, Graphic gView) : this() { graphic = gView; parameter = View; InitializeGraphic(); }
/// <summary> /// Отрисовать линию /// <param name="graphic">График который выводится на шкале</param> /// <param name="number">Порядковый номер графика на шкале</param> /// </summary> private void DrawLine(Graphic graphic, int number) { using (Pen pen = new Pen(graphic.Color)) { // ------------ получить область в которую выводить шкалу для графика ------------ PointF g_point = new PointF(point.X, size.Height - areaHeight * number); SizeF g_size = new SizeF(parent.BaseWidth * parent.WidthCoef, areaHeight); PointF pt = new PointF(g_point.X + g_size.Width, g_point.Y); SizeF sz = new SizeF(size.Width - g_size.Width, areaHeight); RectangleF rect = new RectangleF(pt, sz); // область в которую необходимо выводить шкалу графика //if (graphic.Actived) { // ------------ отрисовать шкалу графика ------------ float Y = (float)Math.Round((double)(rect.Location.Y + (rect.Height / 1.6f))); // Y координата // линии шкалы графика parent.Drawter.Graphics.DrawLine(pen, new PointF(rect.Location.X + 5, Y), new PointF((rect.Location.X + rect.Width) - 10, Y)); // ------------ отрисовать единицы в которых измеряется параметр ------------ using (Font fnt = new Font(FontFamily.GenericSansSerif, 7.9f, FontStyle.Regular)) { // определяем размер строки int ost = parent.GradCount % 2; PointF uPt = new PointF(); SizeF uSize = parent.Drawter.Graphics.MeasureString(graphic.Units, fnt); uPt.Y = Y - uSize.Height - 3; if (ost > 0) { uPt.X = (((rect.Width - 15) / 2.0f) - (uSize.Width / 2.0f)) + rect.X; } else { float del = parent.GradCount + 1; uPt.X = ((((rect.Width - 15) / parent.GradCount) / 2) - ((uSize.Width / parent.GradCount) / 2)) + rect.X; } parent.Drawter.Graphics.DrawString(graphic.Units, fnt, graphic.Brush, uPt); // ---------------------------------- DrawRange(pen, fnt, rect, Y, graphic); } } /*else { using (SolidBrush brush = new SolidBrush(color)) { parent.Drawter.Graphics.FillRectangle(brush, rect); } }*/ } }
/// <summary> /// отрисовать графики в тестовом режиме. то есть просто нарисовать ченить /// </summary> protected void TestDrawGraphics() { Color[] cols = { Color.Red, Color.Green, Color.Blue, Color.Brown, Color.Black }; for (int i = 1; i < 6; i++) { if (parent != null) { Graphic graphic = new Graphic(); graphic.Range.Min = 0; graphic.Range.Max = 50; graphic.Current = 3; graphic.Color = cols[i - 1]; graphic.Units = "[кг/см]"; graphic.Description = "Объем" + i.ToString(); DrawDescription(graphic, i); DrawLine(graphic, i); } } }
/// <summary> /// Отрисовать значения шкал для графика /// </summary> /// <param name="pen">Объект используемый для отрисоки линий</param> /// <param name="fnt">Шрифт которым выводить отрисовку значений</param> /// <param name="rect">Область в которую необходимо выводить значения диапазона</param> /// <param name="Y">Координата Y по которой вычислять координаты Y для вывода значений</param> /// <param name="graphic">График для которого осуществляется вывод значений<param> /// <param name="index">Номер выводимого значения из диапазона</param> protected void DrawRangeValues(Pen pen, Font fnt, RectangleF rect, Single Y, Graphic graphic, int index) { if (index == 0) // отрисовываем первое значение из диапазона { string s_val = string.Format("{0:F1}", graphic.Range.Min); SizeF _size = parent.Drawter.Graphics.MeasureString(s_val, graphic.Font); PointF _pt = new PointF(rect.Location.X + 5, Y - _size.Height); parent.Drawter.Graphics.DrawString(s_val, fnt, graphic.Brush, _pt); } else if (index == parent.GradCount) // отрисовываем последнее значение из диапазона { string s_val = string.Format("{0:F1}", graphic.Range.Max); SizeF _size = parent.Drawter.Graphics.MeasureString(s_val, graphic.Font); PointF _pt = new PointF((rect.Location.X + rect.Width) - _size.Width - 5, Y - _size.Height); parent.Drawter.Graphics.DrawString(s_val, fnt, graphic.Brush, _pt); } else { // отрисовываем промежуточные значения из диапазона float step = (graphic.Range.Max - graphic.Range.Min) / parent.GradCount; float current = graphic.Range.Min + step * index; float stepPt = (float)Math.Round((((rect.Location.X + rect.Width) - 10) - (rect.Location.X + 5)) / parent.GradCount); string s_val = string.Format("{0:F1}", current); SizeF _size = parent.Drawter.Graphics.MeasureString(s_val, graphic.Font); PointF _pt = new PointF(((rect.Location.X + 5) + stepPt * index) - (float)Math.Round(_size.Width / 2.0f), Y - _size.Height); parent.Drawter.Graphics.DrawString(s_val, fnt, graphic.Brush, _pt); } }
/// <summary> /// Отрисовать диапазон шкалы для графика /// </summary> /// <param name="pen">Объек используемый для отрисовки линий</param> /// <param name="fnt">Шрифт которым выводить значения интервала</param> /// <param name="rect">Область в которой выводится шкала графика</param> /// <param name="Y">Y координата линии шкалы графика</param> /// <param name="graphic">График для которого отрисовывется шкала</param> protected void DrawRange(Pen pen, Font fnt, RectangleF rect, Single Y, Graphic graphic) { PointF _pt = new PointF(rect.Location.X + 5, Y + 2); float step = (float)Math.Round((((rect.Location.X + rect.Width) - 10) - (rect.Location.X + 5)) / parent.GradCount); for (int i = 0; i < parent.GradCount; i++) { if (i == 0) { PointF pt_f = new PointF(_pt.X, _pt.Y - 4); parent.Drawter.Graphics.DrawLine(pen, _pt, pt_f); DrawRangeValues(pen, fnt, rect, Y, graphic, i); _pt.X += step; } else { _pt.Y = Y + 1; PointF pt = new PointF(_pt.X, _pt.Y - 2); parent.Drawter.Graphics.DrawLine(pen, _pt, pt); DrawRangeValues(pen, fnt, rect, Y, graphic, i); _pt.X += step; } } _pt.Y = Y + 2; PointF __pt = new PointF(rect.Location.X + rect.Width - 10, _pt.Y - 4); _pt.X = __pt.X; parent.Drawter.Graphics.DrawLine(pen, _pt, __pt); DrawRangeValues(pen, fnt, rect, Y, graphic, parent.GradCount); // ------------ отрисовать текущее значение графика ------------ string pred = string.Empty; float curveValue = float.NaN; if (Mode) { curveValue = graphic.Current; } else { pred = _Time.ToLongTimeString().Trim(); curveValue = graphic.Passive; } if (!float.IsNaN(curveValue)) { float curveCalc = curveValue; if (curveCalc < graphic.Range.Min) curveCalc = graphic.Range.Min; else if (curveCalc > graphic.Range.Max) curveCalc = graphic.Range.Max; float pixels = (((rect.Location.X + rect.Width) - 10) - (rect.Location.X + 5)) / (graphic.Range.Max - graphic.Range.Min); //float curve = pixels * (graphic.Current - graphic.Range.Min) + (rect.Location.X + 5); float curve = pixels * (curveCalc - graphic.Range.Min) + (rect.Location.X + 5); PointF[] pts = new PointF[3]; pts[0] = new PointF(curve, Y); pts[1] = new PointF(curve - 3, Y - 7); pts[2] = new PointF(curve + 3, Y - 9); parent.Drawter.Graphics.FillPolygon(graphic.Brush, pts); parent.Drawter.Graphics.DrawLine(pen, new PointF(pts[0].X, Y), new PointF(pts[0].X, Y - 11)); if (Panel.DrawNumericInScale) { using (SolidBrush curBrush = new SolidBrush(parent.Color)) { using (Font sFnt = new Font(FontFamily.GenericSansSerif, 7.15f, FontStyle.Regular)) { string curVal = string.Empty; if (Mode) { curVal = string.Format("{0:F2}", curveValue).Trim(); } else curVal = string.Format("{0:F2} Время {1}", curveValue, pred).Trim(); PointF ptCur = new PointF(pts[2].X, pts[2].Y - 10); SizeF szText = parent.Drawter.Graphics.MeasureString(curVal, sFnt); if ((rect.Location.X + rect.Width - 5) < (ptCur.X + szText.Width)) { ptCur.X = ptCur.X - szText.Width - 8; } if (Mode == false) { using (Pen pin = new Pen(graphic.Color)) { parent.Drawter.Graphics.DrawRectangle(pin, ptCur.X, ptCur.Y, szText.Width + 1, szText.Height); } } parent.Drawter.Graphics.FillRectangle(curBrush, new RectangleF(ptCur, szText)); parent.Drawter.Graphics.DrawString(curVal, sFnt, graphic.Brush, ptCur); } } } } }
/// <summary> /// Отрисовать описание графика на шкале /// </summary> /// <param name="graphic">График описание которого вывести на шкалу</param> /// <param name="number">Порядковый номер графика на шкале</param> protected void DrawDescription(Graphic graphic, int number) { SizeF g_size = new SizeF(parent.BaseWidth * parent.WidthCoef, areaHeight); PointF g_point = new PointF(point.X, size.Height - areaHeight * number); StringFormat format = new StringFormat(); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; RectangleF rect = new RectangleF(g_point, g_size); parent.Drawter.Graphics.DrawString(graphic.Description, graphic.Font, graphic.Brush, rect, format); /*//if (graphic.Actived) { //parent.Drawter.Graphics.DrawString(graphic.Description, graphic.Font, graphic.Brush, rect, format); } //else { using (SolidBrush brush = new SolidBrush(color)) { parent.Drawter.Graphics.DrawString(graphic.Description, graphic.Font, brush, rect, format); } }*/ }
/// <summary> /// Инициализировать новый график /// </summary> /// <returns>Если график создан и инициализирован то график, в противном случае null</returns> public Graphic InstanceGraphic() { if (g_locker.TryEnterWriteLock(500)) { try { if (graphics.Count < MaxGraphics) { Graphic graphic = new Graphic(); graphics.Add(graphic); return graphic; } } finally { g_locker.ExitWriteLock(); } } return null; }
/// <summary> /// Удалить график /// </summary> /// <param name="graphic">Удаляемый график</param> public void DeleteGraphic(Graphic graphic) { if (g_locker.TryEnterWriteLock(500)) { try { graphics.Remove(graphic); } finally { g_locker.ExitWriteLock(); } } else { throw new TimeoutException("Не удалось удалить график!"); } }
/// <summary> /// выполнить инициализацию второй группы графиков /// </summary> protected void InitializeSGraphics() { graphic_gasnavihode = manager2.InstanceGraphic(); if (loaded == false) { graphic_gasnavihode.Units = "м"; graphic_gasnavihode.Description = "Газ1"; graphic_gasnavihode.Range.Min = 0; graphic_gasnavihode.Range.Max = 50; graphic_gasnavihode.Color = Color.Firebrick; } else if (gr_gasnavihode != null) { graphic_gasnavihode.Units = gr_gasnavihode.Units; graphic_gasnavihode.Description = gr_gasnavihode.Description; graphic_gasnavihode.Range.Min = gr_gasnavihode.Range.Min; graphic_gasnavihode.Range.Max = gr_gasnavihode.Range.Max; graphic_gasnavihode.Color = gr_gasnavihode.Color; gr_gasnavihode.Font.Dispose(); gr_gasnavihode.Brush.Dispose(); gr_gasnavihode = null; } graphic_gasnaplosadke = manager2.InstanceGraphic(); if (loaded == false) { graphic_gasnaplosadke.Units = "м"; graphic_gasnaplosadke.Description = "Газ2"; graphic_gasnaplosadke.Range.Min = 0; graphic_gasnaplosadke.Range.Max = 50; graphic_gasnaplosadke.Color = Color.SeaGreen; } else if (gr_gasnaplosadke != null) { graphic_gasnaplosadke.Units = gr_gasnaplosadke.Units; graphic_gasnaplosadke.Description = gr_gasnaplosadke.Description; graphic_gasnaplosadke.Range.Min = gr_gasnaplosadke.Range.Min; graphic_gasnaplosadke.Range.Max = gr_gasnaplosadke.Range.Max; graphic_gasnaplosadke.Color = gr_gasnaplosadke.Color; gr_gasnaplosadke.Font.Dispose(); gr_gasnaplosadke.Brush.Dispose(); gr_gasnaplosadke = null; } graphic_gaspodrotorom = manager2.InstanceGraphic(); if (loaded == false) { graphic_gaspodrotorom.Units = "м"; graphic_gaspodrotorom.Description = "Газ3"; graphic_gaspodrotorom.Range.Min = 0; graphic_gaspodrotorom.Range.Max = 50; graphic_gaspodrotorom.Color = Color.Blue; } else if (gr_gaspodrotorom != null) { graphic_gaspodrotorom.Units = gr_gaspodrotorom.Units; graphic_gaspodrotorom.Description = gr_gaspodrotorom.Description; graphic_gaspodrotorom.Range.Min = gr_gaspodrotorom.Range.Min; graphic_gaspodrotorom.Range.Max = gr_gaspodrotorom.Range.Max; graphic_gaspodrotorom.Color = gr_gaspodrotorom.Color; gr_gaspodrotorom.Font.Dispose(); gr_gaspodrotorom.Brush.Dispose(); gr_gaspodrotorom = null; } graphic_gaspriemnaemk = manager2.InstanceGraphic(); if (loaded == false) { graphic_gaspriemnaemk.Units = "м"; graphic_gaspriemnaemk.Description = "Газ4"; graphic_gaspriemnaemk.Range.Min = 0; graphic_gaspriemnaemk.Range.Max = 50; graphic_gaspriemnaemk.Color = Color.SaddleBrown; } else if (gr_gaspriemnaemk != null) { graphic_gaspriemnaemk.Units = gr_gaspriemnaemk.Units; graphic_gaspriemnaemk.Description = gr_gaspriemnaemk.Description; graphic_gaspriemnaemk.Range.Min = gr_gaspriemnaemk.Range.Min; graphic_gaspriemnaemk.Range.Max = gr_gaspriemnaemk.Range.Max; graphic_gaspriemnaemk.Color = gr_gaspriemnaemk.Color; gr_gaspriemnaemk.Font.Dispose(); gr_gaspriemnaemk.Brush.Dispose(); gr_gaspriemnaemk = null; } graphic_gasvibrosit = manager2.InstanceGraphic(); if (loaded == false) { graphic_gasvibrosit.Units = "м"; graphic_gasvibrosit.Description = "Газ5"; graphic_gasvibrosit.Range.Min = 0; graphic_gasvibrosit.Range.Max = 50; graphic_gasvibrosit.Color = Color.Black; } else if (gr_gasvibrosit != null) { graphic_gasvibrosit.Units = gr_gasvibrosit.Units; graphic_gasvibrosit.Description = gr_gasvibrosit.Description; graphic_gasvibrosit.Range.Min = gr_gasvibrosit.Range.Min; graphic_gasvibrosit.Range.Max = gr_gasvibrosit.Range.Max; graphic_gasvibrosit.Color = gr_gasvibrosit.Color; gr_gasvibrosit.Font.Dispose(); gr_gasvibrosit.Brush.Dispose(); gr_gasvibrosit = null; } manager2.StartTime = DateTime.Now; manager2.Orientation = GraphicComponent.Orientation.Vertical; manager2.Update(); manager2.UpdatePeriod = 1000; manager2.Mode = GraphicComponent.DrawMode.Activ; manager2.OnDataNeed += new EventHandler(manager2_OnData); }
/// <summary> /// выполнить инициализацию первой группы графиков /// </summary> protected void InitializeFGraphics() { if (manager1 != null) { graphic_talblok = manager1.InstanceGraphic(); if (loaded == false) { graphic_talblok.Units = "м"; graphic_talblok.Description = "Т/блок"; graphic_talblok.Range.Min = 0; graphic_talblok.Range.Max = 45; graphic_talblok.Color = Color.Red; } else if (gr_talblok != null) { graphic_talblok.Units = gr_talblok.Units; graphic_talblok.Description = gr_talblok.Description; graphic_talblok.Range.Min = gr_talblok.Range.Min; graphic_talblok.Range.Max = gr_talblok.Range.Max; graphic_talblok.Color = gr_talblok.Color; gr_talblok.Font.Dispose(); gr_talblok.Brush.Dispose(); gr_talblok = null; } graphic_glybina = manager1.InstanceGraphic(); if (loaded == false) { graphic_glybina.Units = "м"; graphic_glybina.Description = "Гл.Инст"; graphic_glybina.Range.Min = 0; graphic_glybina.Range.Max = 6500; graphic_glybina.Color = Color.Green; } else if (gr_glybina != null) { graphic_glybina.Units = gr_glybina.Units; graphic_glybina.Description = gr_glybina.Description; graphic_glybina.Range.Min = gr_glybina.Range.Min; graphic_glybina.Range.Max = gr_glybina.Range.Max; graphic_glybina.Color = gr_glybina.Color; gr_glybina.Font.Dispose(); gr_glybina.Brush.Dispose(); gr_glybina = null; } graphic_skorostSpo = manager1.InstanceGraphic(); if (loaded == false) { graphic_skorostSpo.Units = "м/с"; graphic_skorostSpo.Description = "Ск.СПО"; graphic_skorostSpo.Range.Min = -2; graphic_skorostSpo.Range.Max = 2; graphic_skorostSpo.Color = Color.Blue; } else if (gr_skorostSpo != null) { graphic_skorostSpo.Units = gr_skorostSpo.Units; graphic_skorostSpo.Description = gr_skorostSpo.Description; graphic_skorostSpo.Range.Min = gr_skorostSpo.Range.Min; graphic_skorostSpo.Range.Max = gr_skorostSpo.Range.Max; graphic_skorostSpo.Color = gr_skorostSpo.Color; gr_skorostSpo.Font.Dispose(); gr_skorostSpo.Brush.Dispose(); gr_skorostSpo = null; } manager1.StartTime = DateTime.Now; manager1.Orientation = GraphicComponent.Orientation.Vertical; manager1.Update(); manager1.UpdatePeriod = 1000; manager1.Mode = GraphicComponent.DrawMode.Activ; manager1.OnDataNeed += new EventHandler(manager1_OnData); } }
/// <summary> /// Загрузить настройки панели /// </summary> /// <param name="Root">Корневой узел в котром находятся настройки панели</param> public override void Load(XmlNode Root) { if (slim.TryEnterWriteLock(500)) { try { if (Root != null && Root.Name == "SpoPanel") { if (Root.HasChildNodes) { loaded = true; foreach (XmlNode child in Root.ChildNodes) { switch (child.Name) { case "graphic_talblok": try { gr_talblok = new Graphic(); gr_talblok.DeSerializeToXml(child); } catch { } break; case "graphic_glybina": try { gr_glybina = new Graphic(); gr_glybina.DeSerializeToXml(child); } catch { } break; case "graphic_skorostSpo": try { gr_skorostSpo = new Graphic(); gr_skorostSpo.DeSerializeToXml(child); } catch { } break; case "graphic_gasnavihode": try { gr_gasnavihode = new Graphic(); gr_gasnavihode.DeSerializeToXml(child); } catch { } break; case "graphic_gasnaplosadke": try { gr_gasnaplosadke = new Graphic(); gr_gasnaplosadke.DeSerializeToXml(child); } catch { } break; case "graphic_gaspodrotorom": try { gr_gaspodrotorom = new Graphic(); gr_gaspodrotorom.DeSerializeToXml(child); } catch { } break; case "graphic_gaspriemnaemk": try { gr_gaspriemnaemk = new Graphic(); gr_gaspriemnaemk.DeSerializeToXml(child); } catch { } break; case "graphic_gasvibrosit": try { gr_gasvibrosit = new Graphic(); gr_gasvibrosit.DeSerializeToXml(child); } catch { } break; case "split": try { splitterDistance = float.Parse(child.InnerText); } catch { } break; default: break; } } } } } finally { slim.ExitWriteLock(); } } }
/// <summary> /// выполнить инициализацию второй группы графиков /// </summary> protected void InitializeSGraphicPanel() { graphic_summObem = manager2.InstanceGraphic(); // график суммарный объем в емкостях if (loaded == false) { graphic_summObem.Units = "м.куб"; graphic_summObem.Description = "Об.Сумм"; graphic_summObem.Range.Min = 0; graphic_summObem.Range.Max = 550; graphic_summObem.Color = Color.Red; } else if (gr_summObem != null) { graphic_summObem.Units = gr_summObem.Units; graphic_summObem.Description = gr_summObem.Description; graphic_summObem.Range.Min = gr_summObem.Range.Min; graphic_summObem.Range.Max = gr_summObem.Range.Max; graphic_summObem.Color = gr_summObem.Color; gr_summObem.Font.Dispose(); gr_summObem.Brush.Dispose(); gr_summObem = null; } graphic_hodi1 = manager2.InstanceGraphic(); // график ходы насоса 1 if (loaded == false) { graphic_hodi1.Units = "ход/мин"; graphic_hodi1.Description = "Ходы 1"; graphic_hodi1.Range.Min = 0; graphic_hodi1.Range.Max = 130; graphic_hodi1.Color = Color.Green; } else if (gr_hodi1 != null) { graphic_hodi1.Units = gr_hodi1.Units; graphic_hodi1.Description = gr_hodi1.Description; graphic_hodi1.Range.Min = gr_hodi1.Range.Min; graphic_hodi1.Range.Max = gr_hodi1.Range.Max; graphic_hodi1.Color = gr_hodi1.Color; gr_hodi1.Font.Dispose(); gr_hodi1.Brush.Dispose(); gr_hodi1 = null; } graphic_hodi2 = manager2.InstanceGraphic(); // график ходы насоса 2 if (loaded == false) { graphic_hodi2.Units = "ход/мин"; graphic_hodi2.Description = "Ходы 2"; graphic_hodi2.Range.Min = 0; graphic_hodi2.Range.Max = 130; graphic_hodi2.Color = Color.Blue; } else if (gr_hodi2 != null) { graphic_hodi2.Units = gr_hodi2.Units; graphic_hodi2.Description = gr_hodi2.Description; graphic_hodi2.Range.Min = gr_hodi2.Range.Min; graphic_hodi2.Range.Max = gr_hodi2.Range.Max; graphic_hodi2.Color = gr_hodi2.Color; gr_hodi2.Font.Dispose(); gr_hodi2.Brush.Dispose(); gr_hodi2 = null; } graphic_potok = manager2.InstanceGraphic(); // график поток на выходе if (loaded == false) { graphic_potok.Units = "%"; graphic_potok.Description = "Поток"; graphic_potok.Range.Min = 0; graphic_potok.Range.Max = 100; graphic_potok.Color = Color.Brown; } else if (gr_potok != null) { graphic_potok.Units = gr_potok.Units; graphic_potok.Description = gr_potok.Description; graphic_potok.Range.Min = gr_potok.Range.Min; graphic_potok.Range.Max = gr_potok.Range.Max; graphic_potok.Color = gr_potok.Color; gr_potok.Font.Dispose(); gr_potok.Brush.Dispose(); gr_potok = null; } manager2.StartTime = DateTime.Now; manager2.Orientation = GraphicComponent.Orientation.Vertical; manager2.Update(); manager2.UpdatePeriod = 1000; manager2.Mode = GraphicComponent.DrawMode.Activ; manager2.OnDataNeed += new EventHandler(manager2_OnData); }
// ------------------------ вспомогательные функции ------------------------ /// <summary> /// Инициализировать графическую панель /// </summary> protected void InitializeFGraphicPanel() { graphic_plPriemna = manager1.InstanceGraphic(); // график плотность приемная емкость if (loaded == false) { graphic_plPriemna.Units = "г/см3"; graphic_plPriemna.Description = "Плот1"; graphic_plPriemna.Range.Min = 0.8f; graphic_plPriemna.Range.Max = 2.2f; graphic_plPriemna.Color = Color.Red; } else if (gr_plPriemna != null) { graphic_plPriemna.Units = "г/см3"; graphic_plPriemna.Description = "Плот1"; graphic_plPriemna.Range.Min = gr_plPriemna.Range.Min; graphic_plPriemna.Range.Max = gr_plPriemna.Range.Max; graphic_plPriemna.Color = gr_plPriemna.Color; gr_plPriemna.Font.Dispose(); gr_plPriemna.Brush.Dispose(); gr_plPriemna = null; } graphic_plBlokaOchi = manager1.InstanceGraphic(); // график плотность блока очистки if (loaded == false) { graphic_plBlokaOchi.Units = "г/см3"; graphic_plBlokaOchi.Description = "Плот2"; graphic_plBlokaOchi.Range.Min = 0.8f; graphic_plBlokaOchi.Range.Max = 2.2f; graphic_plBlokaOchi.Color = Color.Green; } else if (gr_plBlokaOchi != null) { graphic_plBlokaOchi.Units = "г/см3"; graphic_plBlokaOchi.Description = "Плот2"; graphic_plBlokaOchi.Range.Min = gr_plBlokaOchi.Range.Min; graphic_plBlokaOchi.Range.Max = gr_plBlokaOchi.Range.Max; graphic_plBlokaOchi.Color = gr_plBlokaOchi.Color; gr_plBlokaOchi.Font.Dispose(); gr_plBlokaOchi.Brush.Dispose(); gr_plBlokaOchi = null; } graphic_plEmnsek2 = manager1.InstanceGraphic(); // график плотность емкости приготовления отсек2 if (loaded == false) { graphic_plEmnsek2.Units = "г/см3"; graphic_plEmnsek2.Description = "Плот3"; graphic_plEmnsek2.Range.Min = 0.8f; graphic_plEmnsek2.Range.Max = 2.2f; graphic_plEmnsek2.Color = Color.Blue; } else if (gr_plEmnsek2 != null) { graphic_plEmnsek2.Units = "г/см3"; graphic_plEmnsek2.Description = "Плот3"; graphic_plEmnsek2.Range.Min = gr_plEmnsek2.Range.Min; graphic_plEmnsek2.Range.Max = gr_plEmnsek2.Range.Max; graphic_plEmnsek2.Color = gr_plEmnsek2.Color; gr_plEmnsek2.Font.Dispose(); gr_plEmnsek2.Brush.Dispose(); gr_plEmnsek2 = null; } manager1.StartTime = DateTime.Now; manager1.Orientation = GraphicComponent.Orientation.Vertical; manager1.Update(); manager1.UpdatePeriod = 1000; manager1.Mode = GraphicComponent.DrawMode.Activ; manager1.OnDataNeed += new EventHandler(manager1_OnData); }
/// <summary> /// Загрузить настройки панели /// </summary> /// <param name="Root">Корневой узел в котром находятся настройки панели</param> public override void Load(XmlNode Root) { if (slim.TryEnterWriteLock(500)) { try { if (Root != null && Root.Name == "SolutionPanel") { if (Root.HasChildNodes) { loaded = true; foreach (XmlNode child in Root.ChildNodes) { switch (child.Name) { case "graphic_plPriemna": try { gr_plPriemna = new Graphic(); gr_plPriemna.DeSerializeToXml(child); } catch { } break; case "graphic_plBlokaOchi": try { gr_plBlokaOchi = new Graphic(); gr_plBlokaOchi.DeSerializeToXml(child); } catch { } break; case "graphic_plEmnsek2": try { gr_plEmnsek2 = new Graphic(); gr_plEmnsek2.DeSerializeToXml(child); } catch { } break; case "graphic_summObem": try { gr_summObem = new Graphic(); gr_summObem.DeSerializeToXml(child); } catch { } break; case "graphic_hodi1": try { gr_hodi1 = new Graphic(); gr_hodi1.DeSerializeToXml(child); } catch { } break; case "graphic_hodi2": try { gr_hodi2 = new Graphic(); gr_hodi2.DeSerializeToXml(child); } catch { } break; case "graphic_potok": try { gr_potok = new Graphic(); gr_potok.DeSerializeToXml(child); } catch { } break; case "plPriemna": try { plPriemna.Identifier = new Guid(child.InnerText); } catch { } break; case "plBlocka": try { plBlocka.Identifier = new Guid(child.InnerText); } catch { } break; case "plEmkOts2": try { plEmkOts2.Identifier = new Guid(child.InnerText); } catch { } break; case "tempVihod": try { tempVihod.Identifier = new Guid(child.InnerText); } catch { } break; case "temVhod": try { temVhod.Identifier = new Guid(child.InnerText); } catch { } break; case "split": try { splitterDistance = float.Parse(child.InnerText); } catch { } break; default: break; } } } } } finally { slim.ExitWriteLock(); } } }
/// <summary> /// Инициализировать графическую панель /// </summary> protected void InitializeGraphicPanel() { manager.StartTime = DateTime.Now; manager.OnData += new OnDataEventHander(manager_OnData); manager.OnDataNeed += new EventHandler(manager_OnDataNeed); manager.Orientation = GraphicComponent.Orientation.Vertical; graphic_glybina = manager.InstanceGraphic(); // отображаемый график Глубина скважины if (loaded == false) { graphic_glybina.Description = "Забой"; graphic_glybina.Range.Min = 0; graphic_glybina.Range.Max = 6500; graphic_glybina.Units = "м"; graphic_glybina.Color = Color.Red; } else { if (gr_glybina != null) { graphic_glybina.Description = gr_glybina.Description; graphic_glybina.Range.Min = gr_glybina.Range.Min; graphic_glybina.Range.Max = gr_glybina.Range.Max; graphic_glybina.Units = gr_glybina.Units; graphic_glybina.Color = gr_glybina.Color; gr_glybina.Font.Dispose(); gr_glybina.Brush.Dispose(); gr_glybina = null; } } graphic_mehskorost = manager.InstanceGraphic(); // отображаемый график Мех.скорость проходки if (loaded == false) { graphic_mehskorost.Range.Min = 0; graphic_mehskorost.Range.Max = 200; graphic_mehskorost.Units = "м/ч"; graphic_mehskorost.Description = "СК.Мех"; graphic_mehskorost.Color = Color.Green; } else if (gr_mehskorost != null) { graphic_mehskorost.Description = gr_mehskorost.Description; graphic_mehskorost.Range.Min = gr_mehskorost.Range.Min; graphic_mehskorost.Range.Max = gr_mehskorost.Range.Max; graphic_mehskorost.Units = gr_mehskorost.Units; graphic_mehskorost.Color = gr_mehskorost.Color; gr_mehskorost.Font.Dispose(); gr_mehskorost.Brush.Dispose(); gr_mehskorost = null; } graphic_vesnakruke = manager.InstanceGraphic(); // отображаемый график вес на крюке if (loaded == false) { graphic_vesnakruke.Range.Min = 0; graphic_vesnakruke.Range.Max = 450; graphic_vesnakruke.Units = "тс"; graphic_vesnakruke.Description = "Вес"; graphic_vesnakruke.Color = Color.Blue; } else if (gr_vesnakruke != null) { graphic_vesnakruke.Description = gr_vesnakruke.Description; graphic_vesnakruke.Range.Min = gr_vesnakruke.Range.Min; graphic_vesnakruke.Range.Max = gr_vesnakruke.Range.Max; graphic_vesnakruke.Units = gr_vesnakruke.Units; graphic_vesnakruke.Color = gr_vesnakruke.Color; gr_vesnakruke.Font.Dispose(); gr_vesnakruke.Brush.Dispose(); gr_vesnakruke = null; } graphic_davlenienaman = manager.InstanceGraphic(); // отображаемый график давления на манифольде if (loaded == false) { graphic_davlenienaman.Range.Min = 0; graphic_davlenienaman.Range.Max = 400; graphic_davlenienaman.Units = "кг/см2"; graphic_davlenienaman.Description = "Давление"; graphic_davlenienaman.Color = Color.Brown; } else if (gr_davlenienaman != null) { graphic_davlenienaman.Description = gr_davlenienaman.Description; graphic_davlenienaman.Range.Min = gr_davlenienaman.Range.Min; graphic_davlenienaman.Range.Max = gr_davlenienaman.Range.Max; graphic_davlenienaman.Units = gr_davlenienaman.Units; graphic_davlenienaman.Color = gr_davlenienaman.Color; gr_davlenienaman.Font.Dispose(); gr_davlenienaman.Brush.Dispose(); gr_davlenienaman = null; } graphic_rashodnavhode = manager.InstanceGraphic(); // отображаемый график расход на входе if (loaded == false) { graphic_rashodnavhode.Range.Min = 0; graphic_rashodnavhode.Range.Max = 100; graphic_rashodnavhode.Units = "л/с"; graphic_rashodnavhode.Description = "Расход"; graphic_rashodnavhode.Color = Color.DarkOrange; } else if (gr_rashodnavhode != null) { graphic_rashodnavhode.Description = gr_rashodnavhode.Description; graphic_rashodnavhode.Range.Min = gr_rashodnavhode.Range.Min; graphic_rashodnavhode.Range.Max = gr_rashodnavhode.Range.Max; graphic_rashodnavhode.Units = gr_rashodnavhode.Units; graphic_rashodnavhode.Color = gr_rashodnavhode.Color; gr_rashodnavhode.Font.Dispose(); gr_rashodnavhode.Brush.Dispose(); gr_rashodnavhode = null; } }
/// <summary> /// Загрузить настройки панели /// </summary> /// <param name="Root">Корневой узел в котром находятся настройки панели</param> public override void Load(XmlNode Root) { if (slim.TryEnterWriteLock(500)) { try { if (Root != null && Root.Name == "DrillingPanel") { if (Root.HasChildNodes) { loaded = true; foreach (XmlNode child in Root.ChildNodes) { switch (child.Name) { case "numericPanel": try { n_panelNode = child.Clone(); } catch { } break; case "graphic_glybina": try { gr_glybina = new Graphic(); gr_glybina.DeSerializeToXml(child); } catch { } break; case "graphic_mehskorost": try { gr_mehskorost = new Graphic(); gr_mehskorost.DeSerializeToXml(child); } catch { } break; case "graphic_vesnakruke": try { gr_vesnakruke = new Graphic(); gr_vesnakruke.DeSerializeToXml(child); } catch { } break; case "graphic_davlenienaman": try { gr_davlenienaman = new Graphic(); gr_davlenienaman.DeSerializeToXml(child); } catch { } break; case "graphic_rashodnavhode": try { gr_rashodnavhode = new Graphic(); gr_rashodnavhode.DeSerializeToXml(child); } catch { } break; case "svp": try { svp.Identifier = new Guid(child.InnerText); } catch { } break; case "m_svp": try { m_svp.Identifier = new Guid(child.InnerText); } catch { } break; case "kmb": try { kmb.Identifier = new Guid(child.InnerText); } catch { } break; case "rotor": try { rotor.Identifier = new Guid(child.InnerText); } catch { } break; case "mom1": try { mom1.Identifier = new Guid(child.InnerText); } catch { } break; case "mom2": try { mom2.Identifier = new Guid(child.InnerText); } catch { } break; case "split": try { splitterDistance = float.Parse(child.InnerText); } catch { } break; default: break; } } } } } finally { slim.ExitWriteLock(); } } }