井身结构示意图绘制(WPF)

、井深结构示意图绘制所有遵循的石油行业规定

  1. 钻头绘制:绘制一条具有波浪形状的线条
  2. 套管绘制:绘制一条实心线条,加上尾部一张旗帜
  3. 标注绘制:包括每一开次的钻头大小、长度和套管大小

、井身结构示意图绘制步骤

  1. 绘制中心虚线(井眼轨迹线)
  2. 遍历每一开次的信息 
    1. 绘制套管(套管用实心线表示,套管结尾用黑色小三角形符 表示)
    2. 绘制钻头(钻头用波浪线表示)
    3. 添加标注

三、井身结构示意图效果如下

井身结构示意图绘制(WPF)
九、添加标记         ///         /// 添加标注
        ///

        /// 被标注点的坐标         /// 标注坐标         /// 套管信息         /// 标注信息         private void AddNotation(Point lineStartPosition, Point lineEndPosition, string casingStr, string drillStr, Canvas casingCanvas)
        {
            ///产生线条
            Line currentLine = new Line();  //标注和被标注点之间的连线
            currentLine.X1 = lineStartPosition.X;
            currentLine.Y1 = lineStartPosition.Y;
            currentLine.X2 = lineEndPosition.X;
            currentLine.Y2 = lineEndPosition.Y;
            currentLine.Stroke = Brushes.DarkBlue;
            currentLine.StrokeThickness = 0.5;
            casingCanvas.Children.Add(currentLine);

            Grid currentGrid = new Grid();  //标注
            currentGrid.RowDefinitions.Add(new RowDefinition());
            currentGrid.RowDefinitions.Add(new RowDefinition());
            currentGrid.Background = Brushes.White;

            Border border = new Border();
            border.BorderBrush = Brushes.DarkBlue;
            border.BorderThickness = new Thickness(0, 0, 0, 1);
            currentGrid.Children.Add(border);
            border.SetValue(Grid.RowProperty, 0);

            Label drillLabel = new Label(); //创建标签,显示标注
            drillLabel.Padding = new Thickness(0);
            drillLabel.Content = casingStr;
            drillLabel.Foreground = Brushes.DarkBlue;
            drillLabel.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left;
            border.Child = drillLabel; 
            Label casingLabel = new Label();
            casingLabel.Padding = new Thickness(0);
            casingLabel.Content = drillStr;
            casingLabel.Foreground = Brushes.DarkBlue;
            casingLabel.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left;
            currentGrid.Children.Add(casingLabel);
            casingLabel.SetValue(Grid.RowProperty, 1); 
            casingCanvas.Children.Add(currentGrid); 
            currentGrid.SetValue(Canvas.LeftProperty, lineEndPosition.X);
            currentGrid.SetValue(Canvas.TopProperty, lineEndPosition.Y – 16);    
        }
         

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年9月27日
下一篇 2014年9月27日

相关推荐