Пример #1
0
        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);
        }
Пример #2
0
        private double _width; // ScrollViewer的宽度

        #endregion Fields

        #region Constructors

        public StaticDiagram(double width, DataModel model, String path)
        {
            initializeData(width, model, path);
            initializeGraphics();
            initializeHandler();
        }
Пример #3
0
 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();
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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;
        }