以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  請教,文字圍繞圓旋轉有何簡便代碼?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=17438)

--  作者:hhbb
--  发布时间:2012/3/13 13:22:00
--  請教,文字圍繞圓旋轉有何簡便代碼?
請教:有一圓,已知直徑及其坐標,文字圍繞圓旋轉有何簡便代碼?

一個個字符調試其旋轉角度及其坐標太麻煩了

如下圖, 圍繞文字『香港服務名牌 HONG KONG TOP SERVICE BRAND』 


图片点击可在新窗口打开查看此主题相关图片如下:spp.jpg
图片点击可在新窗口打开查看




--  作者:狐狸爸爸
--  发布时间:2012/3/13 15:03:00
--  
只能用制图软件画好,做成一个图片,插入foxtable了。
--  作者:hhbb
--  发布时间:2012/3/13 15:10:00
--  
呵呵,图片的话,如图片小些,文字更小,朦胧一片
--  作者:狐狸爸爸
--  发布时间:2012/3/13 15:17:00
--  
呵呵,这个确实没办法,你可以试试一些制作图章的软件和网站
--  作者:hhbb
--  发布时间:2012/3/13 17:59:00
--  
各字符坐標還易定,旋轉角度不易定,望高手指點:

Dim s1 As String = "BRAND 牌名務服港香   HONG KONG TOP SERVICE "
Dim xy,yy,xn1,yn1,x1,y1,bj1,jdn1 As Double

xy =100   \'圓心X坐標
yy=90      \'圓心Y坐標
bj1=25     \'圓半徑

Dim doc As New PrintDoc \'定义一个报表
Dim rp As New prt.RenderParagraph()

For Each c As Char In s1
    rp = New prt.RenderParagraph()
    rp.Content.AddText(c) 
    rp.Width = 6 
    rp.Height = 6
    jdn1+ =9.7
   y1=bj1*Math.abs(Math.Sin(jdn1*Math.PI/180))
    x1 =(bj1^2-y1^2)^0.5
    If jdn1<90 OrElse jdn1> 270 Then
        xn1=xy+x1
    Else
        xn1=xy-x1
    End If
    
    If jdn1<180 Then
        yn1=yy-y1
    Else
        yn1=yy+y1
    End If
    
    rp.x =xn1
    rp.y =yn1
    rp.Style.TextAngle = jdn1 
    doc.Body.Children.Add(rp) 
    
Next

Doc.Preview() \'预览报表

--  作者:hhbb
--  发布时间:2012/3/14 13:30:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:spp.jpg
图片点击可在新窗口打开查看

唉,俺只能做到这样,如图片小些,更难调整,要是专业报表能有个『环形容器』就易事了!
Dim s1 As String = "BRAND 牌 名 務 服 港 香   HONG KONG TOP SERVICE"
Dim xy,yy,bj1,jdn1 As Double
xy = 100   \'圓心X坐標
yy = 90      \'圓心Y坐標
bj1= 15     \'圓半徑
jdn1=20    \'起始角度


Dim doc As New PrintDoc \'定义一个报表
Dim rm As New prt.RenderImage() \'定义一个图片对象
rm.Image = GetImage("圆心图片.BMP") \'
rm.Width = 28
rm.Height =28
rm.x=xy-10
rm.y=yy-10
doc.Body.Children.Add(rm) 


Dim rp As New prt.RenderParagraph()
For Each c As Char In s1
    rp = New prt.RenderParagraph()
    rp.Content.AddText(c)
    rp.Width = 6
    rp.Height = 6
    jdn1- = Int(3600/s1.Length)/10-0.1   
     rp.x = xy+bj1*Math.Cos(jdn1*Math.PI/180)
    rp.y = yy+bj1*Math.Sin(jdn1*Math.PI/180)       
    rp.Style.TextAngle = iif(asc(c)>64,90,-90) -jdn1
    doc.Body.Children.Add(rp)   
Next
Doc.Preview() \'预览报表
[此贴子已经被作者于2012-3-14 13:40:11编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/3/14 14:03:00
--  

呵呵,很佩服。

 

图片点击可在新窗口打开查看


--  作者:hhbb
--  发布时间:2012/3/14 14:17:00
--  
以下是引用狐狸爸爸在2012-3-14 14:03:00的发言:

呵呵,很佩服。

 

图片点击可在新窗口打开查看


还不美观,不能实用啊!希望高手指教!


--  作者:hhbb
--  发布时间:2012/3/14 18:13:00
--  
頂頂!
--  作者:hhbb
--  发布时间:2012/3/15 9:28:00
--  
再頂