椭圆框
文字在椭圆中均匀排列,实现椭圆印章的效果.
而且要求能编辑文字间的距离和离椭圆边框的距离.
关键是要求出每个字的坐标(x,y)和偏转角度.......

解决方案 »

  1.   

    椭环形文字的排列问题 用程序实现.不知道如何求出每个字的坐标(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
    通过以上公式可以精确计算每个字的起始位置和偏移角度,并在位图的相应位置上输出文字来达到环形文字的效果。
    不过这种方法在椭圆中不行啊~~~~
      

  2.   

    斑竹 用的是什么?? 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);
      

  3.   

    谢谢楼上~
    GDI中有什么好办法吗?
      

  4.   

    http://community.csdn.net/Expert/topic/4409/4409164.xml?temp=.7282526