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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0425
ルビィfontについて6未解決


ルビィ

リンク

2010/4/25(Sun) 16:03:51|NO.32246

HSPのfont命令じゃいろいろと細かい値が指定できないので、
ググって方法を探したところ、以下のC言語のソースが出てきたのですが、
どうもアンチエイリアスが掛からないのです。
何故なのでしょうか?参考にしたソースが悪いのでしょうか?
もちろん、定数とうはちゃんと宣言してます。

参考にしたソース

LOGFONTW lfont; memset(&lfont, 0x00, sizeof(LOGFONTW)); wchar_t szFont[10] = L"MS Gothic"; lfont.lfHeight = 14; lfont.lfWeight = FW_NORMAL; lfont.lfCharSet = SHIFTJIS_CHARSET; lfont.lfOutPrecision = OUT_DEFAULT_PRECIS; lfont.lfClipPrecision = CLIP_DEFAULT_PRECIS; lfont.lfQuality = CLEARTYPE_QUALITY; lfont.lfPitchAndFamily = FF_MODERN | FIXED_PITCH; wcsncpy(lfont.lfFaceName, szFont, lstrlen(szFont)); return CreateFontIndirect(&lfont);



この記事に返信する


ルビィ

リンク

2010/4/25(Sun) 16:06:07|NO.32247

あ、もちろん↑のソースをHSPに移植したものを使ってますよ。



テック

リンク

2010/4/25(Sun) 16:33:31|NO.32248

LOGFONT構造体でググったら解説のページがありました。
http://yokohama.cool.ne.jp/chokuto/urawaza/struct/LOGFONT.html

メンバのlfQualityの説明に
4 (ANTIALIASED_QUALITY)
Windows NT 4.0/2000/XP: フォントがアンチエイリアスをサポートしている場合はアンチエイリアス表示になります。
Windows 95 Plus!/98/Me:

5 (CLEARTYPE_QUALITY)
Windows XP: ClearType アンチエイリアスメソッドを使用してレンダリングされます。
と記述されていました。

ルビィさんのPCのOSがなんであるかはわかりませんが、
lfQualityに設定している定数をCLEARTYPE_QUALITYではなく
ANTIALIASED_QUALITYにしてみたらいかがでしょう。

またANTIALIASED_QUALITYにしてもアンチエイリアスにならないのであれば、
CreateFontIndirect関数で生成したフォントハンドルを
SelectObject関数でデバイスコンテキストのハンドルに関連付けないと
反映されなかったと思います。



ルビィ

リンク

2010/4/25(Sun) 16:56:43|NO.32249

OSはWindows7です。
作成したフォントはSelectObjectで関連付けて、
不要になったらDeleteObjectで削除してます。



テック

リンク

2010/4/25(Sun) 17:49:45|NO.32250

>OSはWindows7です。
>作成したフォントはSelectObjectで関連付けて、
>不要になったらDeleteObjectで削除してます。
ふむ〜、ソースを全部みてないのでわかりませんが、
あとは、フォント名ですかね〜。

フォント名   :説明
MS ゴシック :Microsoft 等幅ゴシック。
MS 明朝   :Microsoft 等幅明朝。
MS Pゴシック:Microsoft プロポーショナルゴシック。
MS P明朝  :Microsoft プロポーショナル明朝。
MS UI Gothic :Microsoft ユーザインタフェース用ゴシック。

フォント名を上記の5種類で試してみてください。
間違ったフォント名を指定していると
サポートしてくれなかったような気がしたので。



テック

リンク

2010/4/25(Sun) 18:37:31|NO.32251

え〜と、ちょっとHSP Document Libraryで調べてみました。

mes命令で出力するフォントは、font命令で、
button,input,mesbox などのオブジェクト制御命令で出力するフォントは、
objmode命令のパラメータで
p1 : モード
------------------------------------------------------------
0 : HSP標準フォントを使用
1 : デフォルトGUIフォントを使用
2 : font命令で選択されているフォントを使用
指定できるということですか。

ちなみに、アンチエイリアスとは、
ドットとドットの間を中間色で補正して遠目に見れば滑らかなようにする
ことなのですが、フォントサイズを大きくしないと分かりにくいかもしれません。


font msgothic, 50, font_antialias //font msgothic, 50, font_normal mes "テスト"

私の場合、Windows Vistaで通常とアンチエイリアスの両方実行し比較したら、
アンチエイリアス化されていました。

ルビィさんの場合は、標準命令でアンチエイリアス化されていますか?
標準命令でアンチエイリアス化されているのであれば、
あとは、HSPの内部処理のことになるので、
おにたま氏に聞いてみるとか・・・・。



backdrop

リンク

2010/4/27(Tue) 00:31:07|NO.32282

そもそもアンチエイリアスが、細かい差だから分かりづらいだけとか(そんなわけない。)

移植するならきちんと動作を考えてHSPで動作するようにしないと当たり前ですが動きません
(どーでもいいけどllmod3で文法エラーが出てる)



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