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