/// <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>()); }