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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0329
いくすフォントサイズについて11解決


いくす

リンク

2007/3/29(Thu) 21:51:49|NO.6695

hsp3.0で

font "MS UI Gothic",10,1 mes "あいうえおABCDEabcde"
(windowsXP標準設定のタイトルバーと同じフォント・サイズ・スタイル) としても
実際それより小さくなってるのですが、
単位が違うのでしょうか。それともまた別な原因なのでしょうか?
私の勘違いだろうか…(でも確かに小さい



この記事に返信する


リンク

2007/3/31(Sat) 12:03:12|NO.6718

大きく表示したいのですか?
それなら10のとこをもっと大きくすればいいのですが・・・



いくす

リンク

2007/3/31(Sat) 12:54:34|NO.6721

ええそれはそうなんですが、何でタイトルバーと数字的に同じにしているのに大きさが変わってくるのかなぁって疑問に思ったのです。
私の環境だけでしょうか?



Lilly

リンク

2007/3/31(Sat) 14:01:08|NO.6729

フォントダイアログで指定される、つまりいくすさんの言うタイトルバーに設定されている大きさの単位はpt(ポイント)で、
font命令で指定される単位はpx(ピクセル)で指定されます。
単位が違うので同じ数字でも違って当然。ということです。
変換できる方法なども探せばあると思うので、興味あるんでしたらやってみてはいかがでしょうか?



いくす

リンク

2007/3/31(Sat) 14:24:38|NO.6730

なるほどポイントとピクセルですか

ピクセルの場合だと文字の大きさは解像度が上がれば上がるほど小さくなって
ポイントだと実際の距離(インチ)を使うから解像度に影響されないのでしょうか?
そうなると環境によってピクセルとポイントの比が変わっってきますよね。
つまりどんな環境でも通用する一定の定数というものが存在しないということですか



GAM-22

リンク

2007/3/31(Sat) 19:26:31|NO.6735

こんにちは、GAM-22です。

確かなことは言えませんが、
通常のWindowsのDPI(1インチあたりに表示できるドット数)が
96だったとしたら、px単位を普通に4/3つまり、1.3倍すれば、pt単位に
変換できると思います。

しかし、私には、肝心のDPIを取得するは分かりません。
大抵の環境では、1.3倍でも大丈夫だと思いますが、稀に120DPIだったり
するらしいので、注意したほうが良いと思います。

しかし、どうしてタイトルバーのフォントサイズが必要なのですか?
できれば、教えて頂けますか?(回答できるとは限らない)

参考:
http://ikb.minidns.net/programming/WIN32DesignUnits.html



リンク

2007/3/31(Sat) 19:30:00|NO.6737

それなら独り言にすればいいと思いますのですが・・・



GAM-22

リンク

2007/3/31(Sat) 19:55:11|NO.6738

>しかし、どうしてタイトルバーのフォントサイズが必要なのですか?
疑問に思ったという事ですね。了解しました。



Lilly

リンク

2007/3/31(Sat) 21:28:32|NO.6743

久々にいじったので、あまりいいコードとはいえないかも知れませんが、必要ならどうぞ。
// ピクセルとポイントの相互変換
#module "get_px_to_pt" #uselib "user32" #cfunc _getdc "GetDC" int #func _releacedc "ReleaseDC" int, int #uselib "gdi32" #cfunc _getdevicecaps "GetDeviceCaps" int, int // Pixel to Point - getPoint // p1 = Point(数値) // p2 = 対象ウィンドウハンドル(省略可能) #defcfunc _getPoint int int_px, int win_hwnd content = 0 use_hdc = _getdc(win_hwnd) ex_pxl = _getdevicecaps(use_hdc, 90) content = int_px * 1440 / ex_pxl _releacedc win_hwnd, use_hdc return content // Point to Pixel - getPixel // p1 = Pixel(数値) // p2 = 対象ウィンドウハンドル(省略可能) #defcfunc _getPixel int int_pt, int win_hwnd content = 0 use_hdc = _getdc(win_hwnd) ex_pxl = _getdevicecaps(use_hdc, 90) content = int_pt * ex_pxl / 1440 _releacedc win_hwnd, use_hdc return content #define global ctype getPoint(%1,%2=hwnd) _getPoint(%1,%2) #define global ctype getPixel(%1,%2=hwnd) _getPixel(%1,%2) #global // Exsample. mes ""+getPixel(getPoint(12),hwnd)
内容については明記しないので、詳しく知りたい、学びたい場合はご自分で調べてください。
調べても分からないなら出来る限り説明はしますが、詳しくお伝えできるとは限らないのでやはり自分で探したほうが早いと思います。
モジュールの著作権なんかは好きにしてください。どう使われようと構いませんが、改造してからバグが出たといわれても対処できません。ごめんなさい。



pizza

リンク

2007/4/1(Sun) 01:10:05|NO.6747

MSDNでCreateFontを参照すると変換方法が載っています。
http://msdn.microsoft.com/library/ja/jpgdi/html/_win32_createfont.asp
(nHeightの説明内)


#include "gdi32.as" #include "kernel32.as" #define LOGPIXELSY 90 GetDeviceCaps hdc, LOGPIXELSY lpy = stat p = 10 // ポイントサイズ // p * lpy / 72 MulDiv p, lpy, 72 height = stat font "MS UI Gothic", height, 1 title "フォントの高さ="+height mes "フォントの高さ="+height stop



いくす

リンク

2007/4/1(Sun) 11:46:13|NO.6767

ありがとうございます。参考にします



いくす

リンク

2007/4/1(Sun) 12:35:58|NO.6770

ちなみに目的は、フォント選択ダイアログでプレビューをそのまま反映させたっかったためです



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