【症状】【要望】
文字描画/文字表示命令では、水平にしか文字列を描画/表示できません
「文字表示」斜めに描画/表示したいのですが、不可能でしょうか
【再現方法】
任意の角度で目盛りを表示するツールを作っていますが、目盛りの角度によっては文字が重なり読みづらくなります
目盛の傾きに応じた角度で文字表示ができれば解決しますが、それができません
イメージ部品に文字を表示し回転することを試みましたが、イメージ部品と重なる線が隠れてしまいます
スクリーンショットを添付します
ご検討をお願いいたいます
【バージョン】1.591
【その他】
#イメージ部品で傾き文字表示する試作ソース
#角度付き文字描画TEST再
!変数宣言が必要。!変数初期化が必要。母艦のサイズ=「10,10,1210,990」。線太さ=1。塗りスタイル=「透明」。
XSとは実数=100。YSとは実数=400。XEとは実数=400。YEとは実数=100。
CMIndxとは整数。CHRIMGとは配列。#文字を乗せるイメージ部品(複数想定したため配列に)
LINE((XS+XE)/2,0,(XS+XE)/2,900)。LINE(0,(YS+YE)/2,900,(YS+YE)/2)。
anglとは実数=(0.00001+ARCTAN((YE-YS)/(XE-XS))*180.0/PI)。
FC文字画像描画((XS+XE)/2,(YS+YE)/2,10,angl,「中下」,SQRT((XE-XS)^2+(YE-YS)^2))。
線色=青色。LINE(XS,YS,XE,YE)。
●FC文字角度最適化(inangl)# 戻り値:(実数)360°を超えない角度
addとは実数=(INT(ABS(inangl)/360)+1)*360。
rsltとは実数=(inangl+add)と360の剰余。
もし、(90<=rslt)AND(rslt<180)ならば、rslt=rslt+180。
もし、(180<=rslt)AND(rslt<270)ならば、rslt=rslt-180。
rsltで戻る。
●FC文字画像描画(px,py,chrh,inangl,position,wrtxt)# px,py:基点座標 chrh:サイズ inangl:角度 文字表示 position:文字配置基点「左中右」/「上中下」 wrtxt:文字列
sft1xとは整数=0。sft1yとは整数=0。sft2xとは整数=0。sft2yとは整数=0。sx1とは実数。sy1とは実数。sx2とは実数。sy2とは実数。
x1とは変数。y1とは変数。x2とは変数。y2とは変数。radnとは実数。tanangとは実数。cosangとは実数。sinangとは実数。anglとは実数=FC文字角度最適化(inangl)。
radn=anglをラジアン変換。tanang=TAN(radn)。cosang=COS(radn)。sinang=SIN(radn)。crrntchrh=母艦の文字サイズ。母艦の文字サイズ=chrh。
chrbとは整数=wrtxtのバイト数+5。chrwとは実数=wrtxtの文字幅取得。##chrwとは整数=chrb*chrh/2.0。
CMIndx=CMIndx+1。CHRIMG[CMIndx]をイメージとして作成。#
CHRIMG[CMIndx]→サイズ=「{px-chrw/2.0},{py-chrh},{px+chrw/2.0},{py+chrh}」。# 余白なし
CHRIMG[CMIndx]の0.0,0.0へwrtxtを文字表示。#
CHRIMG[CMIndx]をanglで画像回転。
CHRIMG[CMIndx]→サイズを「,」で区切って「x1,y1,x2,y2」へ変数分配。#sft1x=(x2-x1)/2。sft1y=(y2-y1)/2。#中心点へのシフト
sft1x=(x2-x1)/2。sft1y=(y2-y1)/2。# 一旦、文字中心を基点座標にシフト sft1x/sft1yに記憶
positionで条件分岐# 上下左右へのアジャスト sft2x/sft2yにセット
「左上」ならば、sft2x=(chrw*cosang+chrh*sinang)/2-chrh*sinang。sft2y=chrw*sinang/2+chrh*cosang。# sft1x:+ sft1y:+
「左中」ならば、sft2x=chrw*cosang/2。sft2y=chrw*sinang/2。# sft1x:+ sft1y:+
「左下」ならば、sft2x=(chrw*cosang+chrh*sinang)/2。sft2y=chrw*sinang/2-chrh*cosang。# sft1x:+ sft1y:+
「中上」ならば、sft2x=(-1)*chrh*sinang/2。sft2y=chrh*cosang/2。# sft1x:- sft1y:+
#「中中」ならば、sft2x=0。sft2y=0。# 中心にシフト済み sft1x:0 sft1y:0
「中下」ならば、sft2x=chrh*sinang/2。sft2y=(-1)*chrh*cosang/2。# sft1x:+ sft1y:-
「右上」ならば、sft2x=(-1)*(chrw*cosang+chrh*sinang)/2。sft2y=(-1)*(chrw*sinang/2-chrh*cosang)。# sft1x:- sft1y:-
「右中」ならば、sft2x=(-1)*chrw*cosang/2。sft2y=(-1)*chrw*sinang/2。# sft1x:- sft1y:-
「右下」ならば、sft2x=(-1)*(chrw*cosang+chrh*sinang)/2-chrh*sinang。sft2y=(-1)*(chrw*sinang/2+chrh*cosang)。# sft1x:- sft1y:-
CHRIMG[CMIndx]→位置=「{px-sft1x+sft2x},{py-sft1y+sft2y}」。#シフト量を加算してイメージ部品を移動
