[求助]AcDbText 文字对不齐问题
......AcDbText *pText=new AcDbText ;
pText->setPosition(startPt);
pText->setTextString(_T("12"));
pText->setHeight(200);
pText->setVerticalMode(AcDb::TextVertMode::kTextVertMid);
pText->setHorizontalMode(AcDb::TextHorzMode::kTextCenter);
pText->setAlignmentPoint(startPt);
......
运行后为什么文字不在startPt处对正?
求高手指点,谢谢!!。。。
这个问题真的很棘手啊,求大家指点。 先把帖子顶起,请大家指点啊。
C++里面为什么这么难控制啊。
你设置了Vertical和Horizontal的对齐方式,会造成对不齐,你需要确定你想怎么样对齐先。
对齐受几个因素影响
1. 对齐方式
2. 对齐点
3. 插入点
根据你上面的代码,设置成默认对齐方式,应该是左对齐,Vertcial方向也用默认的。其实你把对齐方式的2个函数都不用调用,会有默认的值。 恩,好的,谢谢。
当时用了比较极端的方法,找到了中间点的坐标,
然后把startPt的位置定到中间点。
试试大侠的方法。 试好了,告诉大家结果。我记得我当时做的时候是AcDbAttributeDefinition.AcDbText的子类。好像就Align和Fit的对齐方式比较搞,其他的对齐方式都蛮明显的。你用Attdef加一个属性,然后通过属性面板去改对齐方式,看到Grip点的变动,就能明白是怎么对齐的了。
AcDbText *pText=new AcDbText ;
pText->setPosition(startPt);// 删除这一行就可以
pText->setTextString(_T("12"));
pText->setHeight(200);
pText->setVerticalMode(AcDb::TextVertMode::kTextVertMid);
pText->setHorizontalMode(AcDb::TextHorzMode::kTextCenter);
pText->setAlignmentPoint(startPt);
只有当对齐方式是左下对齐时,才需要设置位置点,即调用setPosition()。
页:
[1]