VectorDraw常見問題整理:如何創建帶字符串的線型?

   VectorDraw Developer Framework(VDF)是一個用於應用程序可視化的圖形引擎庫。有了VDF提供的功能,您可以輕鬆地創建、編輯、管理、輸出、輸入和打印2D和3D圖形文件。   


  問:

   我是否可以創建一種線型,其中線穿過文本,例如:---------------------我的文本在這裏---- -------------------。這種線型應該如何創建?

答:

    爲了使文本不被線段覆蓋,您需要添加一個隱藏的線段,其大小與線型中的文本長度相同或稍大。具體請參見下面的代碼和說明:

private void button10_Click(object sender, EventArgs e)
{
    vdDocument thisDocument = vdFramedControl1.BaseControl.ActiveDocument;
    vdLineType lt = thisDocument.LineTypes.Add("MyCustomLineType");
 
    lt = thisDocument.LineTypes.Add("MyCustomLineType");
    lt.Comment = "MyCustomLineType";
 
    lt.Segments.AddItem(new LineTypeSegment(1));
    lt.Segments.AddItem(new LineTypeSegment());
    lt.Segments[1].ShapeText = " Some Text Goes Here ";
    lt.Segments[1].ShapeStyle = thisDocument.TextStyles[0].GrTextStyle;
    lt.Segments[1].ShapeOffsetY = -.125;
    lt.Segments[1].Flag = LineTypeSegment.LineTypeElementType.TTF_TEXT;
    lt.Segments[1].ShapeScale = .25;
 
     // 這是計算文本長度的方法
    vdText txt = new vdText(thisDocument, lt.Segments[1].ShapeText, new gPoint(), lt.Segments[1].ShapeScale); //與文字相同
    txt.Style = thisDocument.TextStyles[0]; //與文字相同
    txt.Update();
    double txtwidth = txt.BoundingBox.Width; 
    txt = null;  //IS NOT NEEDED any more
    
    lt.Segments[1].ShapeOffsetX = txtwidth * 0.1 / 2.0; // 在文字前加5%空格
    
    // 在文本上方添加不可見的段,佔文本長度的110%
    lt.Segments.AddItem(new LineTypeSegment(-1.0 * (txtwidth+ 2.0*lt.Segments[1].ShapeOffsetX)));// 在文本之前和之後添加一個空格,使不可見部分變大
    lt.Segments.AddItem(new LineTypeSegment(1));
    lt.Update();
 
    //用於顯示
    vdLine manuallyDrawnPline = new vdLine(thisDocument, new gPoint(), new gPoint(25, 5));
    thisDocument.Model.Entities.AddItem(manuallyDrawnPline);
    manuallyDrawnPline.LineType = lt;
    manuallyDrawnPline.Update();
    manuallyDrawnPline.Invalidate();
 
    thisDocument.CommandAction.Zoom("E", 0, 0);
}

    對於以上問答,如果您有任何的疑惑都可以在評論區留言,我們會及時回覆。此係列的問答教程我們會持續更新,如果您感興趣,可以多多關注本教程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章