一、参数绘制文字
在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性。
主要用到函数说明:
_DMxDrawX::DrawText
绘制一个单行文字。详细说明如下:
| 参数 | 说明 | 
|---|---|
DOUBLE dPosX  | 文字的位置的X坐标  | 
DOUBLE dPosY  | 文字的位置的Y坐标  | 
BSTR pszText  | 文字内容字符串  | 
DOUBLE dHeight  | 文字高度  | 
DOUBLE dRotation  | 文字的旋转角度  | 
SHORT horizontalMode  | 文字的水平对齐方式,0=kTextLeft,1=kTextCenter,2=kTextRight  | 
SHORT verticalMode  | 文字的竖直对齐方式,1=kTextBottom,2=kTextVertMid,3=kTextTop  | 
_DMxDrawX::AddTextStyle1
向数据库中增加一个文字样式。详细说明如下:
| 参数 | 说明 | 
|---|---|
BSTR pszName  | 文字样式名称  | 
BSTR pszFileName  | shx文件名  | 
BSTR pszBigFontFileName  | big shx文件名  | 
DOUBLE dXScale  | 文字宽度缩放比例  | 
c#中实现代码说明:
private void DrawText(){    //清空当前显示内容    axMxDrawX1.NewFile();    //把颜色改回黑白色    axMxDrawX1.DrawCADColor = 0;    //创建一个图层,名为"TextLayer"    axMxDrawX1.AddLayer("TextLayer");    //设置当前图层为"TextLayer"    axMxDrawX1.LayerName = "TextLayer";    //绘制一个单行文字    //参数一为文字的位置的X坐标 ;参数二为文字的位置的Y坐标 ;参数三为文字内容字符串    //参数四为文字高度;参数五为文字的旋转角度    //参数六为文字的水平对齐方式,0=kTextLeft,1=kTextCenter,2=kTextRight    //参数七文字的竖直对齐方式,1=kTextBottom,2=kTextVertMid,3=kTextTop    //-------------------------------------------------------------------------------------------------    //写一个文字,0,1是左对齐.    axMxDrawX1.DrawCADColor = 65280;    axMxDrawX1.DrawText(0, 1900, "梦想绘图控件3.0 www.mxdraw.com", 100, 0, 0, 1);    //---------------------------------------------------------------------------------------------------    //写一个文字,2,1是右下对齐.    axMxDrawX1.DrawCADColor = 4556677;    axMxDrawX1.DrawText(3000, 2100, "梦想绘图控件3.0 www.mxdraw.com", 100, -20, 2, 1);    //--------------------------------------------------------------------------------------------------    //按指定样式绘制文字    axMxDrawX1.AddTextStyle1("MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7);    axMxDrawX1.TextStyle = "MyTextStyle";    axMxDrawX1.DrawCADColor = 255;    axMxDrawX1.DrawText(0, 3000, "梦想绘图控件3.0 www.mxdraw.com", 100, 0, 0, 1);    //--------------------------------------------------------------------------------------------------    //写一个TureType字体    axMxDrawX1.AddTextStyle2("MyTrueTypeStyle", "黑体", 0.7);    axMxDrawX1.TextStyle = "MyTrueTypeStyle";    axMxDrawX1.DrawText(0, 3150, "梦想绘图控件3.0 www.mxdraw.com", 100, 0, 0, 1);    axMxDrawX1.ZoomAll();    axMxDrawX1.UpdateDisplay();} | 
js中实现代码说明:
function DrawText(){    //清空当前显示内容    mxOcx.NewFile();    //把颜色改回黑白色    mxOcx.DrawColor = 0;    //创建一个图层,名为"TextLayer"    mxOcx.AddLayer("TextLayer");    //设置当前图层为"TextLayer"    mxOcx.LayerName = "TextLayer";    //绘制一个单行文字    //参数一为文字的位置的X坐标 ;参数二为文字的位置的Y坐标 ;参数三为文字内容字符串    //参数四为文字高度;参数五为文字的旋转角度    //参数六为文字的水平对齐方式,0=kTextLeft,1=kTextCenter,2=kTextRight    //参数七文字的竖直对齐方式,1=kTextBottom,2=kTextVertMid,3=kTextTop    //-------------------------------------------------------------------------------------------------    //写一个文字,0,1是左对齐.    mxOcx.DrawColor = 65280;    mxOcx.DrawText(0, 1900, "梦想绘图控件3.0 www.mxdraw.com", 100, 0, 0, 1);    //---------------------------------------------------------------------------------------------------    //写一个文字,2,1是右下对齐.    mxOcx.DrawColor = 4556677;    mxOcx.DrawText(3000, 2100, "梦想绘图控件3.0 www.mxdraw.com", 100, -20, 2, 1);    //--------------------------------------------------------------------------------------------------    //按指定样式绘制文字    mxOcx.AddTextStyle1("MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7);    mxOcx.TextStyle = "MyTextStyle";    mxOcx.DrawColor = 255;    mxOcx.DrawText(0, 3000, "梦想绘图控件3.0 www.mxdraw.com", 100, 0, 0, 1);    //--------------------------------------------------------------------------------------------------    //写一个TureType字体    mxOcx.AddTextStyle2("MyTrueTypeStyle", "黑体", 0.7);    mxOcx.TextStyle = "MyTrueTypeStyle";    mxOcx.DrawText(0, 3150, "梦想绘图控件3.0 www.mxdraw.com", 100, 0, 0, 1);    mxOcx.ZoomAll();    mxOcx.UpdateDisplay();} | 
二、参数绘制多行文字
主要用到函数说明:
_DMxDrawX::DrawMText
绘制一个多行文字。详细说明如下:
| 参数 | 说明 | 
|---|---|
DOUBLE dPosX  | 多行文字位置的X坐标  | 
DOUBLE dPosY  | 多行文字位置的Y坐标  | 
BSTR pszContents  | 多行文字的内容  | 
DOUBLE dHeight  | 多行文字的高度  | 
DOUBLE dWidth  | 多行文字的显示宽度  | 
DOUBLE dRotation  | 多行文字的旋转角度  | 
SHORT iAttachment  | 多行文字的对齐方式  | 
可以取值  | enum AttachmentPoint { kTopLeft = 1, kTopCenter = 2, kTopRight = 3, kMiddleLeft = 4, kMiddleCenter = 5, kMiddleRight = 6, kBottomLeft = 7, kBottomCenter = 8, kBottomRight = 9,  | 
_DMxDrawX::AddTextStyle2
向数据库中增加一个TrueType文字样式。详细说明如下:
| 参数 | 说明 | 
|---|---|
BSTR pszName  | 文字样式名称  | 
BSTR pszTrueTypeFontName  | TrueType字体名  | 
DOUBLE dXScale  | 文字宽度缩放比例  | 
C#中实现代码说明:
private void DrawMText(){    //清空当前显示内容    axMxDrawX1.NewFile();    //把颜色改回黑白色    axMxDrawX1.DrawCADColor = 0;    //绘制多行文字    //参数一为多行文字位置的X坐标  ;参数二为多行文字位置的Y坐标  ;参数三为多行文字的内容    //参数四为多行文字的高度 ;参数五为多行文字的显示宽度    //参数六为多行文字的旋转角度    //参数七为多行文字的对齐方式    axMxDrawX1.DrawCADColor = 255;    axMxDrawX1.DrawMText(100, 100, "cad绘图\\P梦想软件", 15, 500, 0.0, 7);    axMxDrawX1.DrawCADColor = 16711680;    axMxDrawX1.DrawMText(0, 0, "\\A2;平方方法 :m{\\H0.3x;\\S 2^;}", 15, 100, 0.0, 7);    //按指定样式绘制文字    axMxDrawX1.AddTextStyle1("MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7);    axMxDrawX1.TextStyle = "MyTextStyle";    axMxDrawX1.DrawCADColor = 65280;    axMxDrawX1.DrawMText(0, 50, "\\A2;平方方法 :m{\\H0.3x;\\S 2^;}", 15, 100, 0.0, 7);    //--------------------------------------------------------------------------------------------------    //写一个TureType字体    axMxDrawX1.AddTextStyle2("MyTrueTypeStyle", "黑体", 0.7);    axMxDrawX1.TextStyle = "MyTrueTypeStyle";    axMxDrawX1.DrawCADColor = 4556677;    axMxDrawX1.DrawMText(0, 100, "\\A2;平方方法 :m{\\H0.3x;\\S 2^;}", 15, 100, 0.0, 7);    axMxDrawX1.ZoomAll();    axMxDrawX1.UpdateDisplay();} | 
js中实现代码说明:
function DrawMText(){    //清空当前显示内容    mxOcx.NewFile();    //把颜色改回黑白色    mxOcx.DrawColor = 0;    //绘制多行文字    //参数一为多行文字位置的X坐标  ;参数二为多行文字位置的Y坐标  ;参数三为多行文字的内容    //参数四为多行文字的高度 ;参数五为多行文字的显示宽度    //参数六为多行文字的旋转角度    //参数七为多行文字的对齐方式    mxOcx.DrawColor = 255;    mxOcx.DrawMText( 100, 100,"cad绘图\\P梦想软件",15,500,0.0,7);    mxOcx.DrawColor = 16711680;    mxOcx.DrawMText(0,0,"\\A2;平方方法 :m{\\H0.3x;\\S 2^;}",15,100,0.0,7);    //按指定样式绘制文字    mxOcx.AddTextStyle1("MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7);    mxOcx.TextStyle = "MyTextStyle";    mxOcx.DrawColor = 65280;    mxOcx.DrawMText(0, 50,"\\A2;平方方法 :m{\\H0.3x;\\S 2^;}",15,100,0.0,7);    //--------------------------------------------------------------------------------------------------    //写一个TureType字体    mxOcx.AddTextStyle2("MyTrueTypeStyle", "黑体", 0.7);    mxOcx.TextStyle = "MyTrueTypeStyle";    mxOcx.DrawColor = 4556677;    mxOcx.DrawMText(0,100,"\\A2;平方方法 :m{\\H0.3x;\\S 2^;}",15,100,0.0,7);    mxOcx.ZoomAll();    mxOcx.UpdateDisplay();} | 
三、交互绘制文字
主要用到函数说明:
_DMxDrawX::DrawText
绘制一个单行文字。详细说明如下:
| 参数 | 说明 | 
|---|---|
DOUBLE dPosX  | >文字的位置的X坐标  | 
DOUBLE dPosY  | 文字的位置的Y坐标  | 
BSTR pszText  | 文字内容字符串  | 
DOUBLE dHeight  | 文字高度  | 
DOUBLE dRotation  | 文字的旋转角度  | 
SHORT horizontalMode  | 文字的水平对齐方式,0=kTextLeft,1=kTextCenter,2=kTextRight  | 
SHORT verticalMode  | 文字的竖直对齐方式,1=kTextBottom,2=kTextVertMid,3=kTextTop  | 
c#中实现代码说明:
动态拖放时的绘制事件:
private void DrawText(){    // 创建一个文字样式,用于批注文字字体.    axMxDrawX1.AddTextStyle2("MyCommentFont", "黑体", 0.7);    // 创建一个与用户交互取点的对象。    MxDrawUiPrPoint getPt = new MxDrawUiPrPoint();    getPt.message = "点取插入点";    // 设置动态绘制参数.    var spDrawData = getPt.InitUserDraw("DrawText");    spDrawData.SetString("Text", "黄洪辉");    spDrawData.SetDouble("TextHeight", 100);    // 开始取第一个点。    if (getPt.go() != MCAD_McUiPrStatus.mcOk)        return;    var ret = spDrawData.Draw();} | 
动态绘制文字:
private void axMxDrawX1_DynWorldDraw(object sender, AxMxDrawXLib._DMxDrawXEvents_DynWorldDrawEvent e){    MxDrawCustomEntity pCustomEntity = (MxDrawCustomEntity)e.pData;    MxDrawWorldDraw pWorldDraw = (MxDrawWorldDraw)e.pWorldDraw;    string sGuid = pCustomEntity.Guid;      MxDrawPoint curPoint = new MxDrawPoint();      curPoint.x = e.dX;curPoint.y = e.dY;    if(sGuid == "DrawText")    {        // 得到绘制参数.        string sText = pCustomEntity.GetString("Text");        double dTextHeight = pCustomEntity.GetDouble("TextHeight");        // 绘制文字        pWorldDraw.DrawText(curPoint.x, curPoint.y, sText, dTextHeight, 0, MCAD_McHorizontalAlignment.mcHorizontalAlignmentCenter, MCAD_McVerticalAlignment.mcVerticalAlignmentBottom);    }} | 
js中实现代码说明:
动态拖放时的绘制事件:
function DrawText(){    var winWidth = 440;    var winHeight = 140;    var winLeft = (screen.width - winWidth) / 2;    var winTop = (screen.height - winHeight) / 2 - 20;    var str = 'dialogHeight:' + winHeight + 'px;dialogWidth:' + winWidth + 'px;dialogTop:' + winTop + 'px;dialogLeft:' + winLeft + 'px;resizable:yes;center:yes;status:no;'    var rt = window.showModalDialog("Gettext.htm?tmp=" + Math.random(), "输入文字", str);    var txt;    if (typeof (rt) == "undefined") {        return;    } else {        var arr = rt.split(",");        txt = arr[0];    }    // 加入换行操作符\\P    //txt = txt + "\\PTEST";    // 创建一个文字样式,用于批注文字字体.    mxOcx.AddTextStyle2("MyCommentFont","黑体",0.7);    // 创建一个与用户交互取点的对象。    var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");    getPt.message = "点取插入点";    // 设置动态绘制参数.    var spDrawData = getPt.InitUserDraw("DrawText");    spDrawData.SetString("Text", txt);    spDrawData.SetDouble("TextHeight", 100);    // 开始取第一个点。    if (getPt.go() != 1)        return;    var ret = spDrawData.Draw();} | 
动态绘制文字:
function DynWorldDrawText( pCustomEntity, pWorldDraw, curPt) {    // 得到绘制参数.    var sText       = pCustomEntity.GetString("Text");    var dTextHeight = pCustomEntity.GetDouble("TextHeight");    // 绘制文字    pWorldDraw.DrawText (curPt.x,curPt.y,sText,dTextHeight,0,1,1);} | 
四、查找文字
主要用到函数说明:
_DMxDrawX::NewSelectionSet
实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。
_DMxDrawX::NewResbuf
新创建IMxDrawResbuf对象,构造一个过滤链表。
IMxDrawResbuf::AddStringEx
向链表中增加一个string数据,比如:把文字对象,当着过滤条件。
spFilte.AddStringEx("TEXT,MTEXT",5020);IMxDrawSelectionSet::Select2
根据指定的选择方式在图上构造选择集,详细说明如下:
| 参数 | 说明 | 
|---|---|
[in] MCAD_McSelect Mode  | 构造选择集方式  | 
[in] VARIANT point1  | 构造择择集时需要使用到的点对象  | 
[in] VARIANT point2  | 构造择择集时需要使用到的点对象  | 
[in,optional] VARIANT filterType  | 构造选择集的过滤数据的类型  | 
[in,optional] VARIANT filterData  | 构造选择集的过滤数据  | 
实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。将文字对象当作过滤条件,得到文字对象(此处可以是文字或多行文字)。遍历每个文字对象,将文字放到视区中间并绘制一个标记圆。c#代码实现如下:
      private void FineText()        {            // 创建选择集对象              MxDrawSelectionSet ss = new MxDrawSelectionSet();              // 创建过滤对象.            MxDrawResbuf spFilte = new MxDrawResbuf();              // 把文字对象,当着过滤条件.            spFilte.AddStringEx("TEXT,MTEXT", 5020);              // 得到图上,所有文字对象.            ss.Select2(MCAD_McSelect.mcSelectionSetAll, null, null, null, spFilte);                // 遍历每个文字.            bool bFind = false;   // 获得输入的文字            string str = textBox1.Text;            for (int i = 0; i < ss.Count; i++)            {                MxDrawEntity ent = ss.Item(i);                if (ent == null)                    continue;                if (ent.ObjectName == "McDbText")                {                    // 是一个文字                    MxDrawText text = (MxDrawText)ent;                    string sTxt = text.TextString;                      if (sTxt == str)                    {                        // 找到把文字放到视区中间.                        axMxDrawX1.PutEntityInView(ent.ObjectID, 300);                            var dLen = axMxDrawX1.ViewLongToDocCoord(80);                          // 绘制一个标记圆.                        axMxDrawX1.DrawVectorCircle(text.Position.x,                        text.Position.y,                        dLen, 65280);                        bFind = true;                    }                }                else if (ent.ObjectName == "McDbMText")                {                    // 找到一个多行文字                      MxDrawResbuf param = new MxDrawResbuf();                    param.AddObjectId(ent.ObjectID);                    MxDrawMText mtext = (MxDrawMText)ent;                      // 得到多行文字中的,文字内容.                    MxDrawResbuf ret = (MxDrawResbuf)axMxDrawX1.CallEx("Mx_GetMTextContent", param);                    if (ret.AtString(0) == "Ok")                    {                          if (ret.AtString(1) == str)                        {                            // 把文字放到视区.                            axMxDrawX1.PutEntityInView(ent.ObjectID, 300);                              var dLen = axMxDrawX1.ViewLongToDocCoord(80);                              // 绘制一个标记圆.                            axMxDrawX1.DrawVectorCircle(mtext.Location.x,                                mtext.Location.y,                                dLen, 65280);                            bFind = true;                              break;                        }                    }                }                }            if (bFind)                MessageBox.Show("找到文字");            else                MessageBox.Show("没有找到文字");        } | 
实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。将文字对象当作过滤条件,得到文字对象(此处可以是文字或多行文字)。js代码实现如下:
// 创建选择集对象ss = mxOcx.NewSelectionSet();   // 创建一个链表对象   var spFilte = mxOcx.NewResbuf();// 把文字,多行文字当着过滤条件spFilte.AddStringEx("TEXT,MTEXT",5020);// 得到图上所有文字,5代码,全图选择ss.Select2(5,null,null,null,spFilte); | 
遍历每个文字对象,将文字放到视区中间并绘制一个标记圆:
// 遍历每个文字.var bFind = false;      // 遍历选择集for(var i = 0; i < ss.Count;i++){         // 得到选集中的实体var ent = ss.Item(i);if(ent == null)continue;if (ent.ObjectName == "McDbText") {             // 得到文字内容    var sTxt = ent.TextString;      if (sTxt == txt) {        // 把文字放到视区中间.        mxOcx.PutEntityInView(ent.ObjectID, 300);            var dLen = mxOcx.ViewLongToDocCoord(80);          // 绘制一个标记圆.        mxOcx.DrawVectorCircle(ent.Position.x,ent.Position.y,dLen, 65280);        bFind = true;    }}   else if (ent.ObjectName == "McDbMText") {                               var param = mxOcx.NewResbuf();        param.AddObjectId(ent.ObjectID);                  // 得到多行文字中的文字本内容        var ret = mxOcx.CallEx("Mx_GetMTextContent", param);        if (ret.AtString(0) == "Ok") {              if (ret.AtString(1) == txt) {                // 把文字放到视区.                mxOcx.PutEntityInView(ent.ObjectID, 300);                  var dLen = mxOcx.ViewLongToDocCoord(80);                  // 绘制一个标记圆.                mxOcx.DrawVectorCircle(ent.Location.x,            ent.Location.y,            dLen, 65280);                bFind = true;                  break;            }        }    }ent = null;    }      if (!bFind) {    alert("没有找到文字对象");    }    // 在这里必须显示释放控件的COM对象指针.    ss = null;    spFilte = null;    CollectGarbage();} | 
五、将文字变成曲线
js中代码实现说明:
// 打碎图纸上的文字。var filter = mxOcx.NewResbuf();// 设置选择过滤条件,只选择文字。filter.AddStringEx("TEXT,MTEXT", 5020);var ss = mxOcx.NewSelectionSet();// 得到所有文字。ss.AllSelect(filter);// 遍历文字for (var i = 0; i < ss.Count; i++){    var ent = ss.Item(i);    var param = mxOcx.NewResbuf();    param.AddObjectId(ent.ObjectID);    // 打碎自文字。    var ret = mxOcx.CallEx("Mx_Explode", param);    // 删除。    if(ret.AtString(0) == "Ok")        ent.Erase();}mxOcx.ZoomAll(); | 
六、删除全部文字
js中代码实现说明:
var ss = mxOcx.NewSelectionSet();// 创建过滤对象.var spFilte = mxOcx.NewResbuf();// 把文字对象,当着过滤条件.spFilte.AddStringEx("TEXT,MTEXT", 5020);// 得到图上,所有文字对象.ss.Select2(5, null, null, null, spFilte);for (var i = 0; i < ss.Count; i++){    var ent = ss.Item(i);    if (ent == null)        continue;    ent.Erase();}//更新视区显示mxOcx.UpdateDisplay(); | 
七、修改文字
js中代码实现说明:
function changetext() {    var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");    selEnt.message = "选择需要修改的文字";    if(selEnt.go() != 1)        return;    var image = selEnt.Entity();    if(image == null)        return;    if (image.ObjectName == "McDbText") {        var sTxt = '修改的文字';        image.TextString = sTxt;    }} | 
八、得到文字内容
js中代码实现说明:
var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");selEnt.message = "选择文字";if(selEnt.go() != 1)    return;var image = selEnt.Entity();if(image == null)    return;if (image.ObjectName == "McDbText") {    var sTxt =image.TextString ;    alert(sTxt);} | 
九、得到多行文字内容
js中代码实现说明:
// 与用户交互,在图上选择一个实体          var ent = mxOcx.GetEntity("选择多行文字:");          if(ent == null)       {   // 用户取消了选择.              return;       }        var param = mxOcx.NewResbuf();        param.AddObjectId(ent.ObjectID);        var ret = mxOcx.CallEx("Mx_GetMTextContent", param);if(ret.AtString(0) == "Ok")              {   alert(ret.AtString(1));              } | 
十、计算文字外包
c#中代码实现说明:
     MxDrawText text = new MxDrawText();     text.TextString = "BBBBBB";     text.Height = 200;     MxDrawPoint pt, pt2;     text.GetBoundingBox(out pt, out pt2);     MessageBox.Show((pt2.x - pt.x).ToString()); | 
十一、增加文字样式
用户可以增加文字样式到数据库,并设置其字体等属性,具体实现c#代码如下:
  private void CreateText(){    MxDrawApplication app = new MxDrawApplication();    //返回数据库中的文字样式表对象     MxDrawTextStyleTable mxtst = app.WorkingDatabase().GetTextStyleTable();    //增加新的文字样式    MxDrawTextStyleTableRecord mxtstr = mxtst.Add("duanceng");    //设置样式    //设置文字的TrueType字体,如果文字样式设置了TrueType字体,就不会使用前面设置shx字体    //参数一为turetype字体名 参数二为是否粗写  参数三为是否斜写  参数四为windows字符集  参数五暂没使用    mxtstr.SetFont("黑体", false, false, 0, 0);    //返回文字的高度    mxtstr.textSize = 5;      //返回数据库中的文字样式表对象    //设置为当前文字样式      app.WorkingDatabase().CurrentlyTextStyle = "duanceng";} | 
具体实现js代码如下:
  function CreateText(){    //返回控件的数据库对象    var database =mxOcx.GetDatabase();    //返回数据库中的文字样式表对象    var mxtst = database.GetTextStyleTable();    //增加新的文字样式    var mxtstr = mxtst.Add("duanceng");    //设置样式    //设置文字的TrueType字体,如果文字样式设置了TrueType字体,就不会使用前面设置shx字体    //参数一为turetype字体名 参数二为是否粗写  参数三为是否斜写  参数四为windows字符集  参数五暂没使用    mxtstr.SetFont("黑体", false, false, 0, 0);    //返回文字的高度    mxtstr.textSize = 5;    //增加新的文字样式    var mxtstr = mxtst.Add("duanceng1");    //设置样式    //设置文字的TrueType字体,如果文字样式设置了TrueType字体,就不会使用前面设置shx字体    //参数一为turetype字体名 参数二为是否粗写  参数三为是否斜写  参数四为windows字符集  参数五暂没使用    mxtstr.SetFont("黑体", false, false, 0, 0);    //返回文字的高度    mxtstr.textSize = 9;    //返回数据库中的文字样式表对象    //设置为当前文字样式    database.CurrentlyTextStyle = "duanceng";} | 
十二、得到文字样式
用户可以得到所有文字样式名,具体实现c#代码如下:
  private void GetAllText(){    MxDrawDatabase database = (MxDrawDatabase)axMxDrawX1.GetDatabase();    //返回数据库中的文字样式表对象     MxDrawTextStyleTable mxtst = database.GetTextStyleTable();    //创建一个遍历文字样式表中所有文字样式的遍历器    MxDrawTextStyleTableIterator iter = mxtst.NewIterator();    if (iter == null)        return;    string sRet = null;    //移动当前遍历器位置    for (; !iter.Done(); iter.Step(true, false))    {        //返回遍历器当前位置的记录        MxDrawTextStyleTableRecord spTextStyleRec = iter.GetRecord();        //符号表记录名属性          sRet = sRet + ',' + spTextStyleRec.Name;    }    MessageBox.Show(sRet);} | 
具体实现js代码如下:
  function GetAllText() {    var database = mxOcx.GetDatabase();    // 得到所有图层名    var sRet = null;    //返回数据库中的文字样式表对象    var spTextStyleTable = database.GetTextStyleTable();    //创建一个遍历层表中所有图层的遍历器    var spIter = spTextStyleTable.NewIterator();    //移动当前遍历器位置    for(;!spIter.Done();spIter.Step(true,true))    {        //返回遍历器当前位置的记录        var spTextStyleRec = spIter.GetRecord();        //符号表记录名属性        var sName = spTextStyleRec.Name;        // 0零层不参加比较        if(sName != "0")        {            if(sRet == null)                sRet = sName;            else            {                sRet = sRet +","+sName;            }        }    }    alert(sRet);} | 
十三、删除文字样式
用户可以删除某个文字样式,具体实现c#代码如下:
  private void DelText(){    string txt = textBox1.Text;      MxDrawDatabase database = (MxDrawDatabase)axMxDrawX1.GetDatabase();    //返回数据库中的文字样式表表对象    MxDrawTextStyleTable TextStyleTable = database.GetTextStyleTable();    //得到层表中的文字样式表对象    MxDrawTextStyleTableRecord TextStyleRec = TextStyleTable.GetAt(txt, false);    if (TextStyleRec == null)        return;    //删除对象    TextStyleRec.Erase();    MessageBox.Show("成功删除文字样式");} | 
具体实现js代码如下:
  function DelText() {    var winWidth = 440;    var winHeight = 140;    var winLeft = (screen.width - winWidth) / 2;    var winTop = (screen.height - winHeight) / 2 - 20;    var str = 'dialogHeight:' + winHeight + 'px;dialogWidth:' + winWidth + 'px;dialogTop:' + winTop + 'px;dialogLeft:' + winLeft + 'px;resizable:yes;center:yes;status:no;'    var rt = window.showModalDialog("Gettext.htm?tmp=" + Math.random(), "输入图层名", str);    var txt;    if (typeof (rt) == "undefined") {        return;    } else {        var arr = rt.split(",");        txt = arr[0];    }    var database = mxOcx.GetDatabase();    //返回数据库中的文字样式表表对象    var TextStyleTable = database.GetTextStyleTable();    //得到层表中的文字样式表对象    var TextStyleRec = TextStyleTable.GetAt(txt, false);    if (TextStyleRec == null)        return;    //删除对象    TextStyleRec.Erase();    alert("成功删除文字样式");} | 
十四、加粗文字
首先增加文字样式到数据库,如下代码所示:
function CreateText(){    //返回控件的数据库对象    var database =mxOcx.GetDatabase();    //返回数据库中的文字样式表对象    var mxtst = database.GetTextStyleTable();    //增加新的文字样式    var mxtstr = mxtst.Add("duanceng");    //设置样式    //设置文字的TrueType字体,如果文字样式设置了TrueType字体,就不会使用前面设置shx字体    //参数一为turetype字体名 参数二为是否粗写  参数三为是否斜写  参数四为windows字符集  参数五暂没使用    mxtstr.SetFont("黑体", false, false, 0, 0);    //返回文字的高度    mxtstr.textSize = 5;    //增加新的文字样式    var mxtstr = mxtst.Add("duanceng1");    //设置样式    //设置文字的TrueType字体,如果文字样式设置了TrueType字体,就不会使用前面设置shx字体    //参数一为turetype字体名 参数二为是否粗写  参数三为是否斜写  参数四为windows字符集  参数五暂没使用    mxtstr.SetFont("黑体", false, false, 0, 0);    //返回文字的高度    mxtstr.textSize = 9;    //返回数据库中的文字样式表对象    //设置为当前文字样式    //database.CurrentlyTextStyle = "duanceng";} | 
将选中的文字样式设置为数据库中需要的文字样式名,如下代码所示:
function BoldText() {    var selEnt = mxOcx.NewComObject("IMxDrawUiPrEntity");    selEnt.message = "选择需要修改的文字";    if(selEnt.go() != 1)        return;    var text = selEnt.Entity();    if(text == null)        return;    if (text.ObjectName == "McDbText") {        text.TextStyle = "duanceng";    }} | 
十五、将文字变成曲线2
c#代码如下所示:
     MxDrawUtility mxUtility = new MxDrawUtility();     MxDrawPoint getPt;     MxDrawEntity ent = mxUtility.GetEntity(out getPt, "选择文字对象");          if (ent == null)                  return;     MxDrawText txt = (MxDrawText)ent;     MxDrawResbuf ret  = txt.ToCurves();          if (ret == null)                  return;          or (int i = 0; i < ret.Count; i++)     {         MxDrawEntity newEnt = (MxDrawEntity)ret.AtObject(i);         axMxDrawX1.DrawEntity(newEnt);     } | 
js代码如下所示:
var ent = mxOcx.GetEntity( "选择文字对象");if (ent == null)    return;var txt = ent;var ret  = txt.ToCurves();if (ret == null)    return;for (var i = 0; i < ret.Count; i++){    var newEnt = ret.AtObject(i);    mxOcx.DrawEntity(newEnt);} |