在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 |
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);
}
}