public MainWindow() { InitializeComponent(); TabControl _control = new TabControl(); #region 静态图表 TabItem _Sitem = new TabItem(); _Sitem.Header = "静态绘图"; // 连接数据库 SqlDataAccess Sconn = new SqlDataAccess("Data Source=(local);Initial Catalog=数据发送数据库;Integrated Security=True"); DataSet Sds = Sconn.SelectDataSet("Select * from WS_Drilling_Depth_Based where WELLID = '龙109井' and WELLBOREID ='主井眼' order by DEPTMEAS asc"); if (Sds.Tables[0].Rows.Count == 0) { System.Windows.MessageBox.Show("'龙109井'的录井数据为空,请重新选择!"); return; } else { StaticDiagram.DataModel Smodel = new StaticDiagram.DataModel("..\\..\\StaticDiagram\\DataConfig.xml", Sds); StaticDiagram.StaticDiagram diagram = new StaticDiagram.StaticDiagram(900, Smodel, "..\\..\\StaticDiagram\\DiagramConfig.xml"); diagram.drawGraphics(); _Sitem.Content = diagram; _control.Items.Add(_Sitem); } #endregion #region 动态图表 _Ditem = new TabItem(); _Ditem.Header = "动态绘图"; initializeDataBase(); initializeGraphics(); System.Windows.Forms.Timer _timer = new System.Windows.Forms.Timer(); _timer.Enabled = true; _timer.Interval = 1000; _timer.Tick += new EventHandler(DataCollect); _control.Items.Add(_Ditem); #endregion this._grid.Children.Add(_control); }
private double _width; // ScrollViewer的宽度 #endregion Fields #region Constructors public StaticDiagram(double width, DataModel model, String path) { initializeData(width, model, path); initializeGraphics(); initializeHandler(); }
public Column(int width, int headerHeight, int bodyHeight, List<Data> datalist, double minDEPTH, double maxDEPTH, double scale, DataModel model) { initializeData(width, headerHeight, bodyHeight, datalist, minDEPTH, maxDEPTH, scale, model); initializeGraphics(); initializeContextMenu(); }
private void initializeData(double width, DataModel model, String path) { // 初始化图形属性 XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode node = doc.SelectSingleNode("Diagram/ColumnHeader/Height"); _headerHeight = Int32.Parse(node.InnerText); node = doc.SelectSingleNode("Diagram/ColumnBody/CanvasHeight"); _bodyHeight = Int32.Parse(node.InnerText); node = doc.SelectSingleNode("Diagram/ScaleColumn/ShowHeight"); _showHeight = Int32.Parse(node.InnerText); // 初始化数据元素 _width = width; _colWidth = adjustColumnWidth(width, model.DefaultColumnNumber); _model = model; _columns = new List<Column>(); _headerPanel = new StackPanel(); _headerPanel.Orientation = Orientation.Horizontal; _bodyViewer = new ScrollViewer(); _bodyViewer.Height = Int32.Parse(doc.SelectSingleNode("Diagram/BodyViewer/Height").InnerText); _bodyPanel = new StackPanel(); _bodyPanel.Orientation = Orientation.Horizontal; _bodyViewer.Content = _bodyPanel; List<List<Data>> list = new List<List<Data>>(); for (int i = 0; i < _model.DefaultColumnNumber; ++i) { List<Data> datalist = new List<Data>(); list.Add(datalist); } for (int i = 0; i < _model.DataList.Count; ++i) { Data d = _model.DataList.ElementAt(i); if (d.DefaultColumnPos.Count == 0) continue; for (int j = 0; j < d.DefaultColumnPos.Count; ++j) { list.ElementAt(d.DefaultColumnPos.ElementAt(j) - 1).Add(d); } } _scale = new ColumnScale(_model.DEPTMEAS.Min, _model.DEPTMEAS.Max, _colWidth, _showHeight, _headerHeight, _bodyHeight); _headerPanel.Children.Add(_scale.Header); _bodyPanel.Children.Add(_scale.Body); for (int i = 0; i < _model.DefaultColumnNumber; ++i) { Column c = new Column(_colWidth, _headerHeight, _bodyHeight, list.ElementAt(i), _model.DEPTMEAS.DData.Min(), _model.DEPTMEAS.DData.Max(), _scale.Scale, _model); _columns.Add(c); _headerPanel.Children.Add(c.Header); _bodyPanel.Children.Add(c.Body); } }
private void initializeData(int width, int headerHeight, int bodyHeight, List<Data> datalist, double minDEPTH, double maxDEPTH, double scale, DataModel model) { List<ColumnHeaderData> list = new List<ColumnHeaderData>(); foreach (Data data in datalist) { list.Add(new ColumnHeaderData(data)); } _header = new ColumnHeader(list, headerHeight); _body = new ColumnBody(width, bodyHeight); _minDEPTH = minDEPTH; _maxDEPTH = maxDEPTH; _scale = scale; _width = width; _model = model; }