关于公章效果中文字旋转文字角度计算原理?
我做的公章效果组件,最后一步了,怎么计算每个文字对着圆心的旋转角度
http://218.108.10.25/download/test.bmp
如能解决,发布组件源代码,谢谢.
问题点数:100、回复次数:6Top
1 楼Waiting4you(毛毛)回复于 2005-11-25 10:09:07 得分 50
按Angle的方向输出,Angle用度数(Deg)表示,比如60.0
void TextOutAngle(TCanvas *Canvas,int X, int Y,AnsiString Text,double Angle)
{
HFONT hFont, Fontold;
HDC DC;
if(Text.IsEmpty()) return;
DC=Canvas->Handle;
AnsiString Fontname=Canvas->Font->Name;
hFont= CreateFont(Canvas->Font->Height,0,
Angle*10,Angle*10,
Canvas->Font->Style.Contains(fsBold)?FW_BOLD:FW_NORMAL,
Canvas->Font->Style.Contains(fsItalic),
Canvas->Font->Style.Contains(fsUnderline),
Canvas->Font->Style.Contains(fsStrikeOut),
Canvas->Font->Charset,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
FF_DONTCARE&DEFAULT_PITCH,
Fontname.c_str());
Fontold= SelectObject(DC, hFont);
::TextOut(DC,X,Y,Text.c_str(),Text.Length());
SelectObject(DC, Fontold);
DeleteObject(hFont);
}
Top
2 楼PPower(月亮光光,照地堂)回复于 2005-11-25 12:37:09 得分 50
先取得字的高度寬度,再計算形心點(中心點),然後按形心的切線方向畫出即可。
單個字的畫出角度即為: 形心點到圓心的角度 + 90度 。
對於一行字,先設定分布的起始角度及結束角度,然後均分即可。Top
3 楼lhj(努力加油)回复于 2005-11-25 15:44:52 得分 0
佩服,等你的源代码看看了。就在这贴里面公布吧?Top
4 楼jemyzhang(妙狐)回复于 2005-11-25 23:07:53 得分 0
是这样的,你要确定每个字的左上角的坐标,然后计算文字的倾斜角度,记住向左边偏是取正,而且几何的90度对系统来说就是0度,所以要用实际的几何角度减去90度才是倾斜角度。接下来就像 Waiting4you(毛毛)那样写的。TextOut中的x,y就是左上角的坐标Top
5 楼jemyzhang(妙狐)回复于 2005-11-25 23:08:55 得分 0
我在做印章显示方面的研究,期待你的组建哦Top
6 楼sncel(地狱情人-杨勇)回复于 2005-11-26 11:01:25 得分 0
请不要发表可能给我们带来伤害的言论,谢谢配合
我的代码里没有什么不对的词啊。发不了代码。Top




