HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0327
シンバル出力される文字のサイズ2解決


シンバル

リンク

2008/3/27(Thu) 08:06:22|NO.14613


test = "あいうえおかきくけこ" buffer 1 font "HG創英角ゴシックUB",26,16 print test a = ginfo(14) gsel font "HG創英角ゴシックUB",26,16 print a

mesやprintをする前に、ginfo(14)、出力される文字のXサイズを得るのはどうすればいいでしょうか?
strlenの出力される文字のXサイズ版みたいなのが欲しいのですが。
上のスクリプトでも可能ですが、文字を書かなくてはならない分遅くなってしまうので。



この記事に返信する


begriff

リンク

2008/3/27(Thu) 08:44:37|NO.14614

GetTextExtentPoint32を使いましょう。


#module #uselib "gdi32.dll" #func GetTextExtentPoint32 "GetTextExtentPoint32A" int,int,int,int #deffunc messize var tBuf,array tSize notesel tBuf repeat notemax noteget tBuf2,cnt tBuf3=tBuf2 txtLen=strlen(tBuf3) dim tSize,2 GetTextExtentPoint32 hdc,varptr(tBuf3),txtLen,varptr(tSize) if cnt=0:x=tSize(0) if x<tSize(0):x=tSize(0) loop tSize(0)=x tSize(1)=tSize(1)*notemax return #global textBuf="tes\ntnofgfggfgi" messize textBuf,textSize color 200,200,200 boxf 0,0,textSize(0),textSize(1) color mes textBuf



シンバル

リンク

2008/3/27(Thu) 10:34:13|NO.14619

助かりました。ありがとうございます。
GetTextExtentPoint32なんていうのがあるんですね。勉強になりました。



ONION software Copyright 1997-2023(c) All rights reserved.