iCAx开思网

标题: CAA:求助 如何把2DRep里的字符给转90度显示 [打印本页]

作者: acoka    时间: 2006-4-6 13:26
标题: CAA:求助 如何把2DRep里的字符给转90度显示
现在我是做个CAT2DAnnotationTextGP,然后把它设到一个CAT2DCustomRep,再传给CAT2DBagRep, 然后显示到CAT2DViewer

给CAT2DCustomRep::SetMatrix, 但发现只是相对坐标变了,CAT2DAnnotationTextGP里的字符不能旋转
(用CAT2DAnnotationTextGP是因为我不想让它zoom)
作者: acoka    时间: 2006-4-6 15:53
// 座標変換
                CATMathVector2Df dir1f( 0.f, 1.f);
                CATMathVector2Df dir2f( -1.f, 0.f);
                CATMathPoint2Df oriP;
                CAT3x3Matrix RevMatrix( dir1f, dir2f, oriP);

                // create text
                CATMathPoint2Df iPoint;// = ((CAT2DViewer*)_CustomComponent001)->GetModelCoordinates( CATMathPoint2Df( 0.f, 0.f));  
                float iHeight = 1.f;
                CAT2DAnnotationTextGP* pAnnoTxt = new CAT2DAnnotationTextGP( iPoint, "_TEST", TOP_LEFT, iHeight, 1);

                // create customrep
                CAT2DCustomRep* p2DCustomRep = new CAT2DCustomRep();
                // put GP test  in
                p2DCustomRep->AddGP( pAnnoTxt, graphicAttributeSet);

                // create BagRep( can define a callback)
                CAT2DBagRep* pBagRep = new CAT2DBagRep();
                // put customrep in
                pBagRep->AddChild( *p2DCustomRep );
                // 位置変更
                pBagRep->SetMatrix( RevMatrix);
                //pBagRep->ComputeBoundingElement( );

                // 2DView更新
                ((CAT2DViewer*)_CustomComponent001)->AddRep(pBagRep);
作者: unnamed9    时间: 2006-4-6 16:36
我认为CAT2DCustomRep::SetMatrix只管本REP相对的坐标偏移,不管下面GP本身的旋转这些属性的,所以设置这个没有用。
在CAT2DAnnotationTextGP里面并没有看见设置旋转角度的API, 但是在CAT2DGeometricTextGP 构造函数里面就能找到控制旋转角度的参数
const float  iOrientationAngle =0.0.

供acoka兄参考  
作者: xyzhu    时间: 2006-4-6 19:42
我用过CAT3DAnnotationTextGP, 记得无论用鼠标怎样转动模型, 文字并不随着转动.
用CAT2DGeometricTextGP的话,如果zoom很大,Text就得缩小, 但当文字高度小到10.0以下时,CPU被全部占用,5到10分钟之后才恢复,也不知道在算什么.
作者: acoka    时间: 2006-4-6 21:33
我是在命令的panel里做个4个CAT2DViewer, 然后分别在里面建动态阵列,每个cell都可以响应click

CAT2DGeometricTextGP可以选达到旋转效果,但字体大小不知道如何控制,同样的设定,在不同大小的2DViewer里大小不同,很是头疼

CAT2DCustomRep::SetMatrix的确如unnamed9所说,但我试过修改CAT3x3Matrix的值对角线列外的值,发现字没有倾斜,字的背景色雀可以变成斜菱形之类的,莫名其妙
作者: unnamed9    时间: 2006-4-7 09:06
CAT2DGeometricTextGP构造函数里面的默认的大小是10,const float  iHeight =10.。
虽然viewer的scale确是可以影响到text的大小的,但是需要在text里面设置的,默认状态应该是不受影响的。acoka兄应该没做这些设置的,奇怪竟然在不同的2DViewer里面竟然大小不一样,也没发现有什么API可以影响到这些设置。。。。。。
测试看看
作者: acoka    时间: 2006-4-7 10:25
下面右边是我要做的目标
左边的图里4个2DViewer大小不同,但字体设置大小相同,不知道为什么右下角这个最大
作者: unnamed9    时间: 2006-4-7 12:33
会不会是
CAT2DCustomRep::SetMatrix
使用的matrix的scaling不一样?
作者: saeba    时间: 2006-4-7 16:56
如果文字内容不变化的话,建议做成图片试试,省心省资源(记得当初是这么跟江头说的)
如果变化的话。。。算我没说
另外,有没有试过用转90度的字体?
作者: xyzhu    时间: 2006-4-7 22:59
会不会是这四个窗口的Viewport (clipping area)不一样, 如果不一样, 相当于窗口被放大或缩小了.
作者: unnamed9    时间: 2006-4-10 09:48
原帖由 saeba 于 2006-4-7 16:56 发表
如果文字内容不变化的话,建议做成图片试试,省心省资源(记得当初是这么跟江头说的)
如果变化的话。。。算我没说
另外,有没有试过用转90度的字体?


图片好啊!
作者: acoka    时间: 2006-4-10 11:45
原帖由 saeba 于 2006-4-7 16:56 发表
如果文字内容不变化的话,建议做成图片试试,省心省资源(记得当初是这么跟江头说的)
如果变化的话。。。算我没说
另外,有没有试过用转90度的字体?


最近就没有过省心的事
本来该做这事的人给自己排的一件1星期完成事进度拖后,花了近4星期。
这个倒霉差事就落我头上了。
虽然不是个mission impossible,但实在太麻烦。最近也实在没有心情动脑子
作者: acoka    时间: 2006-4-12 19:42
可行性是有了,就是字体太难看

有没有调字体的经验谈呀?比如那种字体好看,如何调zoom之类,请指教




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3