■
Direct2DでDPtoLPを実現する。DPはデバイス座標。LPは論理座標。
GDI32ではDPtoLPなる関数があり、それに相当する。
DP:LP=1:1でないアプリを作成する場合になくてはならない。
///////////////////////////////////////////////////////////////////////////////
★簡単// MFC風のラッパークラス
class FPointF : public D2D1_POINT_2F
{public :
FPointF( float x, float y ){ ... }
...
};
static FPointF LPtoDP( const D2D1_MATRIX_3X2_F& mat, const FPointF& ptlog )
{
Matrix3x2F m( mat._11, mat._12, mat._21, mat._22, mat._31, mat._32 );FPointF dppt = m.TransformPoint( ptlog );
return dppt;
}
static FPointF DPtoLP( const D2D1_MATRIX_3X2_F& mat, const FPointF& ptdev )
{
Matrix3x2F m( mat._11, mat._12, mat._21, mat._22, mat._31, mat._32 );
m.Invert();FPointF ptlog = m.TransformPoint( ptdev );
return ptlog;
}