単位当たりのピクセル幅を計算

'データフレームの単位当たりのディスプレイ距離を計算
Sub fncCalculateDistance()
    
    'Applicationの取得
    Dim pMxApplication As IMxApplication
    Set pMxApplication = Application
    
    Dim pAppDisplay As IAppDisplay
    Set pAppDisplay = pMxApplication.Display
    
    Dim pDisplayTransformation As IDisplayTransformation
    Set pDisplayTransformation = pAppDisplay.DisplayTransformation
    
    'MapControlを使用する場合は,IMapControl2がFromMapPoint,ToMapPointメソッドを持っています
    
    'ディスプレイ単位の原点を作成
    Dim pDFromPoint As IPoint
    Set pDFromPoint = New Point
    pDFromPoint.PutCoords 0, 0
    
    'ディスプレイ単位の原点をデータフレームの座標系に準拠した座標値に変換
    Dim pFromPoint As IPoint
    Set pFromPoint = pDisplayTransformation.ToMapPoint(pDFromPoint.x, pDFromPoint.y)
    Debug.Print "ディスプレイ原点の空間座標", "X:" & pFromPoint.x, "Y:" & pFromPoint.y
    
    '移動量のシフト量を設定
    Dim lngUnit As Long
    lngUnit = 1
    
    'X方向へ設定単位X方向へシフトさせた空間座標値を取得
    Dim pToPoint As IPoint
    Set pToPoint = New Point
    pToPoint.PutCoords pFromPoint.x + lngUnit, pFromPoint.y
    Debug.Print "シフト先の空間座標", "X:" & pToPoint.x, "Y:" & pToPoint.y
    
    'ディスプレイ単位のシフト先ポイントを作成
    Dim lngToX As Long
    Dim lngToY As Long
    pDisplayTransformation.FromMapPoint pToPoint, lngToX, lngToY
    
    '単位はデータフレームで定義された座標系に準拠
    Debug.Print "単位当のディスプレイX距離", lngToX

End Sub