VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 アルゴリズム・基本コードのメニュー
1.VB6.0 の関数・ステートメント・プロパティ等はVB2005ではどうなった
2.Pixel ← →Twip 単位変換3方法
3.バイトを表す数値をバイト、KB、MB等の単位に変換する
4.最大値・最小値等の取得・配列のソート関係色々
5.
6.
7.
8.
9.
10.
11.
12.
 .
20.その他、当サイト内に掲載のアルゴリズム・基本コードに関するサンプル


2.Pixel ← →Twip 単位変換(05_Alg_01) (旧、SampleNo.281)
1.Pixel ← →Twip 単位変換(Win 32 API を使って)
2.Pixel ← →Twip 単位変換(VisualBasic.Compatibility 関数を使って)
3.Pixel ← →Twip 単位変換(Graphics.DpiX / DpiYプロパティを使って)
4.
5.
6.

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :追加なし
参照設定:
別に記載
その他 :使用コントロール:Button1 〜 Button3
    :
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.Pixel ← →Twip 単位変換(Win 32 API を使って)

Private Const LOGPIXELSX As Integer = 88    '横方向の1論理インチ当たりのピクセル数
Private Const LOGPIXELSY As Integer = 90    '縦方向の1論理インチ当たりのピクセル数

'ディバイスに関する情報を取得する(908)
<System.Runtime.InteropServices.DllImport("gdi32.dll", _
    CharSet:=Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function GetDeviceCaps( _
    ByVal Phdc As IntPtr, ByVal cIndex As Int32) As Int32
End Function

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using g As Graphics = Me.CreateGraphics()
        Dim hdc As IntPtr = g.GetHdc()
        Dim x, y As Integer
        x = GetDeviceCaps(hdc, LOGPIXELSX)
        y = GetDeviceCaps(hdc, LOGPIXELSY)
        Dim scaleX As Integer = CInt(1440.0F / x)
        Dim scaleY As Integer = CInt(1440.0F / y)

        Label1.Text = "1.横方向の1ピクセルあたりの Twip は、" & scaleX & " です。"
        Label2.Text = "1.縦方向の1ピクセルあたりの Twip は、" & scaleX & " です。"
    End Using
End Sub

上記実行結果
 横方向の1ピクセルあたりの Twip = 15
 縦方向の1ピクセルあたりの Twip = 15

このページのトップへ移動します。 2.Pixel ← →Twip 単位変換(VisualBasic.Compatibility 関数を使って)
プロジェクト→参照の追加→.NET→Microsoft.VisualBasic.Compatibility を参照設定しておいてください。

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'VB2010以降では、[旧形式です。]との波線が表示されますが使用には問題ありません。
    Dim scaleX As Single = Microsoft.VisualBasic.Compatibility.VB6.Support.TwipsPerPixelX
    Dim scaleY As Single = Microsoft.VisualBasic.Compatibility.VB6.Support.TwipsPerPixelY
    Label1.Text = "2.横方向の1ピクセルあたりの Twip は、" & scaleX & " です。"
    Label2.Text = "2.縦方向の1ピクセルあたりの Twip は、" & scaleX & " です。"

    'VisualBasic.Compatibility 名前空間 をご覧になるとその他座標の変換関数や色々な、Visual Basic 6.0 から
    'Visual Basic 2008 へのアップグレードツールで使用するための関数やオブジェクトが用意されています。
End Sub

上記実行結果
 横方向の1ピクセルあたりの Twip = 15
 縦方向の1ピクセルあたりの Twip = 15

このページのトップへ移動します。 3.Pixel ← →Twip 単位変換(Graphics.DpiX / DpiYプロパティを使って)

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Using g As Graphics = Me.CreateGraphics()
        Dim scaleX As Single = 1440.0F / g.DpiX
        Dim scaleY As Single = 1440.0F / g.DpiY
        Label1.Text = "3.横方向の1ピクセルあたりの Twip は、" & scaleX & " です。"
        Label2.Text = "3.縦方向の1ピクセルあたりの Twip は、" & scaleX & " です。"
    End Using
End Sub

上記実行結果
 横方向の1ピクセルあたりの Twip = 15
 縦方向の1ピクセルあたりの Twip = 15

このページのトップへ移動します。 4.


このページのトップへ移動します。 5. 



このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
1ピクセルあたりの Twip 数を取得




このページのトップへ移動します。