Пример #1
0
        /// <summary>
        /// 私有方法:隶属于AddNormalTxtItemToFigure,根据某一个小段的具体内容绘制数据
        /// </summary>
        /// <param name="topZbPt">参数:小段顶坐标</param>
        /// <param name="bottomZbPt">参数:小段底坐标</param>
        /// <param name="tiDrawstruc">参数:文本项信息结构体</param>
        /// <param name="HorSpace"></param>
        /// <param name="VerSpace"></param>
        private void AddTxtItemDrawStrucToFigure(LJJSPoint topZbPt, LJJSPoint bottomZbPt, TextItemDrawStruc tiDrawstruc, double HorSpace, double VerSpace, Model.Drawing.TxtItemClass textItemStruct, double lineRoadWidth)
        {
            LJJSPoint inserpos      = GetTxtItemInsertPt(topZbPt, bottomZbPt, textItemStruct.TxtPosition, lineRoadWidth); //获取插入小段文字的位置
            double    txtspace      = textItemStruct.TxtSize * 1.2;                                                       //文字字体的格式
            string    txtcontent    = tiDrawstruc.textcontent.Trim();
            int       txtcount      = txtcontent.Length;                                                                  //正常文字个数
            double    verAreaHeight = Math.Abs(topZbPt.YValue - bottomZbPt.YValue);

            double txtspaceoffset = 0;

            //分析文字分散方式是集中还是分散
            if (textItemStruct.TxtDistribution == Txtdistribution.TxtSpread)                                //分散式
            {
                if (textItemStruct.TxtPaiLie == TxtArrangeStyle.TxtVerArrange)                              //横排排列
                {
                    txtspaceoffset = (VerSpace - txtcount * textItemStruct.TxtSize * 1.1) / (txtcount + 1); //横向距离处理
                }
                else//纵排排列
                {
                    txtspaceoffset = (HorSpace - txtcount * textItemStruct.TxtSize * 1.1) / (txtcount + 1);//纵向距离处理
                }
                if (txtspaceoffset > 0)
                {
                    txtspace = txtspace + txtspaceoffset;
                }
            }
            //分析文字排列方式是横排还是纵排
            if (textItemStruct.TxtPaiLie == TxtArrangeStyle.TxtHorArrange)
            {
                //绘制图形
                if (txtspaceoffset > 0)
                {
                    MText.AddHengPaiMText(txtcontent, textItemStruct.TxtSize, inserpos, textItemStruct.TxtPosition, textItemStruct.TxtStrFont);
                }
                else
                {
                    MText.AddHengPaiMTextHaveWidth(txtcontent, textItemStruct.TxtSize, inserpos, textItemStruct.TxtPosition, textItemStruct.TxtStrFont, lineRoadWidth);
                }
            }
            else
            {
                if (txtspaceoffset > 0)
                {
                    MText.AddZongPaiMText(txtcontent, textItemStruct.TxtSize, inserpos, textItemStruct.TxtPosition, textItemStruct.TxtStrFont);
                }
                else
                {
                    MText.AddZongPaiMTextHaveHeigh(txtcontent, textItemStruct.TxtSize, inserpos, textItemStruct.TxtPosition, textItemStruct.TxtStrFont, verAreaHeight);
                }
            }
        }
        public override List <ulong> AddTextItemToFigure(JDStruc jdstruc, List <TextItemDrawStruc> textItemDrawStrucCol)
        {
            List <TextItemDrawStruc> yshebinglist = GetHeBingTiYSList(textItemDrawStrucCol);//获取新的泛型

            double          lasthd         = 10;
            LJJSPoint       lastbottomzbpt = jdstruc.JDPtStart;            //井段内的井段起始点
            AttachmentPoint bzpos          = AttachmentPoint.MiddleCenter; //定义文本项位置
            LJJSPoint       inserttxtpos;                                  //插入文本项位置

            double txtoffset = 2;

            double txtwidth = lineRoadWidth - 2 * txtoffset;

            for (int i = 0; i < yshebinglist.Count; i++)
            {
                TextItemDrawStruc currtidrawstruc   = yshebinglist[i];
                LJJSPoint         titopZuoBiaoPt    = ZuoBiaoOper.GetJSZuoBiaoPt(jdstruc.JDPtStart, currtidrawstruc.depthtop, jdstruc.JDtop, FrameDesign.ValueCoordinate);
                LJJSPoint         tibottomZuoBiaoPt = ZuoBiaoOper.GetJSZuoBiaoPt(jdstruc.JDPtStart, currtidrawstruc.depthbottom, jdstruc.JDtop, FrameDesign.ValueCoordinate);


                if (Math.Abs(titopZuoBiaoPt.YValue - tibottomZuoBiaoPt.YValue) > textItemStruct.TxtSize * 1.2)
                {
                    bzpos = AttachmentPoint.MiddleCenter;

                    inserttxtpos = new LJJSPoint(titopZuoBiaoPt.XValue + lineRoadWidth * 0.5, (tibottomZuoBiaoPt.YValue + titopZuoBiaoPt.YValue) * 0.5);
                }
                else
                {
                    if (bzpos == AttachmentPoint.MiddleLeft)
                    {
                        bzpos        = AttachmentPoint.MiddleRight;
                        inserttxtpos = PointUtil.GetRightInsertTxtPt(titopZuoBiaoPt, tibottomZuoBiaoPt, 3, lineRoadWidth);
                    }
                    else
                    {
                        bzpos        = AttachmentPoint.MiddleLeft;
                        inserttxtpos = PointUtil.GetLeftInsertTxtPt(titopZuoBiaoPt, tibottomZuoBiaoPt, 3);
                    }
                }
                MText.AddMText(currtidrawstruc.textcontent.Trim(), "", inserttxtpos, bzpos, textItemStruct.TxtFont, txtwidth + 0.5, 0.6);

                // MText.AddMText(currtidrawstruc.textcontent.Trim(), textItemStruct.TxtSize, inserttxtpos, bzpos, textItemStruct.TxtFont, txtwidth + 0.5, 0.6);
                if (Math.Abs(lastbottomzbpt.YValue - titopZuoBiaoPt.YValue) > 0.001)//是起头
                {
                    lasthd = 10;
                    if (lasthd < textItemStruct.TxtSize * 1.2)
                    {
                        BiaoZhuLineUtil.AddHorBZLine(lastbottomzbpt, txtoffset, lineRoadWidth, 0);//画上段剖面的终点的标注线;
                    }
                    else
                    {
                        Line.BuildCommonHorSolidLineByLayer(lastbottomzbpt, lineRoadWidth, 0, DrawCommonData.DirectionRight);
                    }
                }
                if (Math.Abs(titopZuoBiaoPt.YValue - tibottomZuoBiaoPt.YValue) < textItemStruct.TxtSize * 1.2 || lasthd < textItemStruct.TxtSize * 1.2)
                {
                    BiaoZhuLineUtil.AddHorBZLine(titopZuoBiaoPt, txtoffset, lineRoadWidth, 0);
                }
                else
                {
                    Line.BuildCommonHorSolidLineByLayer(titopZuoBiaoPt, lineRoadWidth, 0, DrawCommonData.DirectionRight);
                }
                lastbottomzbpt = tibottomZuoBiaoPt;
                lasthd         = Math.Abs(titopZuoBiaoPt.YValue - tibottomZuoBiaoPt.YValue);
            }
            Line.BuildCommonHorSolidLineByLayer(lastbottomzbpt, lineRoadWidth, 0, DrawCommonData.DirectionRight);
            return(new List <ulong>());
        }