SSブログ

雑記 TwipをPixcelに変換する [その他]

 Twipに関する記事を書こうと思って調べていたら、VBの.net以降はTwipが扱えないらしいです。
 ACCESS2010はまだTwipでの指定です。

 TwipをPixcelに変換する方法が、マイクロソフトのサイトにありました。
http://support.microsoft.com/kb/210590/ja
 自動翻訳のようで、日本語が変ですが、プログラムはちゃんと動きました。

 ほぼ転載になりますが、説明等追加してますので、参考までに。

Option Compare Database
Option Explicit

'ディスプレイデバイスコンテキストのハンドルを取得する
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

'デバイスコンテキストを解放する
Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long

'デバイス固有の情報を取得する
Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long

Const WU_LOGPIXELSX = 88 '論理インチ当たりの画面の水平方向のピクセル数
Const WU_LOGPIXELSY = 90 '論理インチ当たりの画面の垂直方向のピクセル数

Public Function ConvertTwipsToPixels(lngTwips As Long, lngDirection As Long) As Long
'TwipからPixcelへの変換
'引数
'lngTwips・変換するTwips値
'lngDirection・0:横方向、0以外:縦方向

    'Handle to device
    Dim lngDC As Long
    Dim lngPixelsPerInch As Long

    '1インチ=1440Twips
    Const nTwipsPerInch = 1440

    lngDC = GetDC(0)
    If (lngDirection = 0) Then
    '水平方向
        lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
    Else
    '垂直方向
        lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
    End If
    lngDC = ReleaseDC(0, lngDC)

    'ピクセル数を計算
    ConvertTwipsToPixels = (lngTwips / nTwipsPerInch) * lngPixelsPerInch

End Function


Public Sub subTEST()
    Dim lngOldTwips As Long

    lngOldTwips = 2377
    Debug.Print ConvertTwipsToPixels(lngOldTwips, 0)

End Sub

 と、試してはみたものの、これを活用する機会があるかどうかは分かりません。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。