明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3550|回复: 6

[求助]AcDbText 文字对不齐问题

[复制链接]
发表于 2010-11-11 16:08:00 | 显示全部楼层 |阅读模式

 

......

 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处对正?

求高手指点,谢谢!!。。。

 楼主| 发表于 2010-11-12 09:19:00 | 显示全部楼层
这个问题真的很棘手啊,求大家指点。
 楼主| 发表于 2010-11-17 09:19:00 | 显示全部楼层

先把帖子顶起,请大家指点啊。

C++里面为什么这么难控制啊。

发表于 2010-12-24 11:06:51 | 显示全部楼层
你设置了Vertical和Horizontal的对齐方式,会造成对不齐,你需要确定你想怎么样对齐先。
对齐受几个因素影响
1. 对齐方式
2. 对齐点
3. 插入点
根据你上面的代码,设置成默认对齐方式,应该是左对齐,Vertcial方向也用默认的。其实你把对齐方式的2个函数都不用调用,会有默认的值。
 楼主| 发表于 2010-12-27 13:21:49 | 显示全部楼层
恩,好的,谢谢。
当时用了比较极端的方法,找到了中间点的坐标,
然后把startPt的位置定到中间点。
试试大侠的方法。
发表于 2010-12-27 14:39:44 | 显示全部楼层
试好了,告诉大家结果。我记得我当时做的时候是AcDbAttributeDefinition.AcDbText的子类。好像就Align和Fit的对齐方式比较搞,其他的对齐方式都蛮明显的。你用Attdef加一个属性,然后通过属性面板去改对齐方式,看到Grip点的变动,就能明白是怎么对齐的了。
发表于 2010-12-29 09:19:50 | 显示全部楼层
本帖最后由 松竹 于 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()。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 11:54 , Processed in 0.148232 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表