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 数を取得 |