文字サイズのポイントからピクセル変換 <TOP>
文字サイズのポイントからピクセルに変換します。
MulDiv 2つの符号付き32ビット整数を乗算し、その結果(64ビット)を1つの符号付き32ビット整数で除算
Declare
Function Api_MulDiv& Lib "kernel32" Alias "MulDiv" (ByVal nNumber&, ByVal
nNumerator&, ByVal nDenominator&)
nNumber 被乗数を指定
nNumerator 乗数を指定
nDenominator 除数を指定
(nNumber * nNumerator) を、nDenominator で割ることを意味します。
例では、10Pointの文字を印刷する場合の高さを求めています。整数同士の計算ですので結果を10で除算します。
'================================================================ '= 文字サイズのポイントからピクセルに変換 '= (MulDiv.bas) '================================================================ #include "Windows.bi" ' 2つの符号付き32ビット整数を乗算(64ビット)し、その結果を1つの符号付き32ビット整数で除算 Declare Function Api_MulDiv& Lib "kernel32" Alias "MulDiv" (ByVal nNumber&, ByVal nNumerator&, ByVal nDenominator&) Var Shared Text(4) As Object Var Shared Edit(3) As Object Var Shared Button1 As Object For i = 0 To 4 If i < 4 Then Edit(i).Attach GetDlgItem("Edit" & Trim$(Str$(i + 1))) Edit(i).SetFontSize 14 End If Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) Text(i).SetFontSize 14 Next Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var A As Long Var B As Long Var C As Long Var D As Long A = Val(Edit(0).GetWindowText) B = Val(Edit(1).GetWindowText) C = Val(Edit(2).GetWindowText) D = Api_MulDiv(A, B, C) Edit(3).SetWindowText Str$(D) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End