求思路 : 椭圆中 椭环形文字的排列问题??? 椭圆框文字在椭圆中均匀排列,实现椭圆印章的效果.而且要求能编辑文字间的距离和离椭圆边框的距离.关键是要求出每个字的坐标(x,y)和偏转角度....... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 椭环形文字的排列问题 用程序实现.不知道如何求出每个字的坐标(x,y)和偏转角度的表达式已经实现了圆形框 中 圆环形文字生成.可供参考!利用对称法精确计算每个字的具体位置和偏移角度来实现环形文字的输出。汉字为正方形(因为汉字是双字节的,所以其大小近似于正方形),L为正方形的边长,圆框的半径为R,字体的偏移角度为a,正方形对应的圆心角为2b,(x ,y)为汉字输出的起始点,(x0,y0)为圆中心点的坐标。问题就是已知R和L以及(x0,y0)的值,需要求(x ,y)和a的值。根据圆的基本定律与相似三角形定律可知以下公式: b = asin(L/2/R) h = (L/2-L*tan(b))/tan(b) a = 2*atan(L/2/h) cta4 = pi/2-(a)*i (i为第N个字,从中间开始向两边计数)输出位置(x,y): x = x0 + cos(cta4+b)*R y = y0 - sin(cta4+b)*R偏转角度:Angle = (pi*1.5+cta4)/pi通过以上公式可以精确计算每个字的起始位置和偏移角度,并在位图的相应位置上输出文字来达到环形文字的效果。不过这种方法在椭圆中不行啊~~~~ 斑竹 用的是什么?? gdi+ 吗? 假如是的 你的这种方法就不是很适合了,gdi+ 中为你作好了很好的准备了,只要吊用TranslateTransform 、DrawString 、RotateTransform 、这几个方法就可以实现你的要求了,rg片断://test //graphics.TranslateTransform(0,R); //graphics.RotateTransform(45); //graphics.DrawString(L"测",-1,&font2,layRect,&stringFormat1,&brush3); //graphics.RotateTransform(-45); //graphics.TranslateTransform(0,-R); 谢谢楼上~GDI中有什么好办法吗? http://community.csdn.net/Expert/topic/4409/4409164.xml?temp=.7282526 用ZIP压缩文件做资源所产生的问题 VC 判断联网问题 有个很老的多文档模板类,忘了名字 进程的CPU利用率是怎么算出来的? 请问可不可以通过SendMessage来对QQ的聊天窗口操作(如发送消息或关闭等等) 一个没有经过打包Setup的程序...注册表..dll 用SQL如何实现这个功能 关于 远程-复制“文件夹”的问题。 请问谁有把"字符"转换成为"字模点阵"的算法! 'initializing' : truncation from 'const double' to 'float' Why?? 如何获取1厘米长的坐标点 请问哪有COM的界面库,toolbar,menu之类的封装了的。
利用对称法精确计算每个字的具体位置和偏移角度来实现环形文字的输出。汉字为正方形(因为汉字是双字节的,所以其大小近似于正方形),L为正方形的边长,圆框的半径为R,字体的偏移角度为a,正方形对应的圆心角为2b,(x ,y)为汉字输出的起始点,(x0,y0)为圆中心点的坐标。问题就是已知R和L以及(x0,y0)的值,需要求(x ,y)和a的值。
根据圆的基本定律与相似三角形定律可知以下公式:
b = asin(L/2/R)
h = (L/2-L*tan(b))/tan(b)
a = 2*atan(L/2/h)
cta4 = pi/2-(a)*i (i为第N个字,从中间开始向两边计数)
输出位置(x,y):
x = x0 + cos(cta4+b)*R
y = y0 - sin(cta4+b)*R
偏转角度:
Angle = (pi*1.5+cta4)/pi
通过以上公式可以精确计算每个字的起始位置和偏移角度,并在位图的相应位置上输出文字来达到环形文字的效果。
不过这种方法在椭圆中不行啊~~~~
//graphics.TranslateTransform(0,R);
//graphics.RotateTransform(45);
//graphics.DrawString(L"测",-1,&font2,layRect,&stringFormat1,&brush3);
//graphics.RotateTransform(-45);
//graphics.TranslateTransform(0,-R);
GDI中有什么好办法吗?