掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETでGetGlyphOutlineを使用するには (ID:146036)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
[ 環境:VB.NET 2005 ] GetGlyphOutline APIを使用して文字のアウトラインを 取得しようとしているのですが、APIの宣言が悪いのか、 何が悪いのか文字サイズが正しく返ってきません。 使用方法や宣言で間違っているところがありましたら、 ご指摘いただけないでしょうか? よろしくお願いいたします。 [ 宣言 ] Public Declare Function GetDC Lib "user32.dll" (ByVal hwnd As IntPtr) As IntPtr Public Declare Function GetGlyphOutline Lib "gdi32" Alias "GetGlyphOutlineA" (ByVal hdc As IntPtr, ByVal uChar As Long, ByVal fuFormat As Long, ByRef lpgm As GLYPHMETRICS, ByVal cbBuffer As Long, ByVal lpBuffer As Long, ByRef lpmat2 As MAT2) As Long Public Structure POINTAPI Public x As Long Public y As Long End Structure Public Structure GLYPHMETRICS Public gmBlackBoxX As Long Public gmBlackBoxY As Long Public gmptGlyphOrigin As POINTAPI Public gmCellIncX As Integer Public gmCellIncY As Integer End Structure Public Structure FIXED Public fract As Integer Public value As Integer End Structure Public Structure MAT2 Public eM11 As FIXED Public eM12 As FIXED Public eM21 As FIXED Public eM22 As FIXED End Structure [ 使用箇所 ] Dim mat As MAT2 Dim uicharacter As Long Dim dsize As Long Dim pBMP() As Byte Dim gm As GLYPHMETRICS Dim hdc As IntPtr = GetDC(IntPtr.Zero) With mat .eM11.value = 1 .eM12.value = 0 .eM21.value = 0 .eM22.value = 1 End With uicharacter = Asc("a") 'サイズを取得 dsize = GetGlyphOutline(hdc, uicharacter, GGO_GRAY4_BITMAP _ , gm, 0, Nothing, mat) 'このdsizeに巨大な値(283695307298963455)が戻されて '以下のメモリを確保するところでOverflowExceptionが発生します。 '必要なサイズのメモリを確保 ReDim pBMP(Integer.Parse(dsize.ToString)) 'アウトラインを取得 GetGlyphOutline(hdc, uicharacter, GGO_GRAY4_BITMAP, gm _ , dsize, pBMP(0), mat)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.