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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0806
GrapeColor(DION)同じfontを何回も呼び出す5解決


GrapeColor(DION)

リンク

2012/8/6(Mon) 09:31:35|NO.48145

私が今作ってるソフトウェアは描写の関係上、2種類のフォントをほぼ交互に呼び出しています。
しかし、font命令は重いのでパフォーマンスに少なからず影響してきます。
高速に切り替えられる方法はないでしょうか。



この記事に返信する


あり

リンク

2012/8/6(Mon) 10:51:33|NO.48147

どのくらいの文字を1フレームで表示させるのかはわかりませんが
英数字やかなだけなら文字を画像データにしてコピーする方法等で
高速化が望めると思います。
(そもそもmes命令自体が結構重いので)

また、フォントの切り替えが遅いのなら切り替えをする回数を減らす
工夫をしてみるという手もありますね。
文字の幅さえ分かっていれば同じフォント部分だけ一度に表示させる事も可能ですし。


他にはWin32APIのCreateFont等で独自にフォントを作成して管理するとか?
(速度を比較した事はありませんが・・・)



mamo

リンク

2012/8/7(Tue) 20:57:59|NO.48263

窓毎にフォント指定しておいてコピー・・・ ごめん;



GrapeColor(DION)

リンク

2012/8/7(Tue) 21:07:54|NO.48265

font命令ってウィンドウごとに別々に設定できるんですね!
見落としていました
mamoさんありがとうございました
ありさんもありがとうございました。



mamo

リンク

2012/8/7(Tue) 23:08:59|NO.48276

良かったのでしょうか;
他にも色々と出てきたら自分的にも嬉しいなと書いたのだった。



ヂオン

リンク

2012/8/8(Wed) 03:52:27|NO.48284

font 命令は毎回 CreateFont とDeleteObject と SelectObject 関数を呼び出します。
もし作成したフォントハンドルを取得しておけるなら。SelectObject関数のみで十分に動作します。


#include "gdi32.as" #module // フォントを取得する #defcfunc getfont str face_,int size_ , int style_ font face_,size_,style_ mref bm,67 // bmscr 内の hfont のメンバを返した場合、もう一度、font 命令を実行した際に、 // font 命令内で呼び出されている DeleteObject 命令によってオブジェクトの大元が削除され。 // 無意味な値に成ってしまう。 CreateFontIndirect varptr(bm.49/*bmscr 内のlogfont 構造体*/) return stat #deffunc select int obj_ SelectObject hdc,obj_ return #global // eof hfont_msg_32_1 = getfont(MSGOTHIC,32,1) hfont_msg_16 = getfont(MSGOTHIC,16) select hfont_msg_32_1 mes "てすと" select hfont_msg_16 mes "てすと" redraw // 作成したフォントは必ず削除 DeleteObject hfont_msg_32_1 DeleteObject hfont_msg_16



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