'データフレームの単位当たりのディスプレイ距離を計算 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
単位当たりのピクセル幅を計算
2016/9/1 (木)