・Direct2D DirectXのDirect2Dでは、[[アフィン変換]](線形変換)がサポートされている。 座標(X,Y)に対して、変換行列を乗算して、アフィン変換を行う。 ---- ・アフィン変換 P・M=P' 現在の座標Pに変換行列Mを乗算して、線形変換後の座標P'を作成する。 ①オブジェクトの変換前の各座標:1行×3列 P[X Y 1] ②変換行列:3行×2列 ┌M11(初期値:1) M12(初期値:0)┐ M│M21(初期値:0) M32(初期値:1)│ └M31(初期値:0) M33(初期値:0)┘ ③オブジェクトの変換後の各座標:1行×2列 P'[X' Y'] X'=X×M11+Y×M21+1×M31(初期値:X×1+Y×0+1×0 =X) Y'=X×M12+Y×M22+1×M32(初期値:X×0+Y×1+1×0 =Y) ---- ・回転:Rotate 指定した角度と中心点を持つ回転 変換 Matrix3x2F Rotation( FLOAT angle, D2D1_POINT_2F centerPoint ); angle:回転角度(度単位,正の角度の場合は時計回り,負の角度の場合は反時計回り) centerPoint:回転の中心点 x:中心点のX座標 y:中心点のY座標 ---- ・拡大/縮小:Scale 指定したX軸方向およびY軸方向の拡大/縮小率と中心点を持つ拡大/縮小 変換 Matrix3x2F Scale( D2D1_SIZE_F size, FLOAT width, FLOAT height D2D1_POINT_2F centerPoint FLOAT x, FLOAT y ); size: width:サイズの水平成分(幅) height:サイズの垂直成分(高さ) centerPoint:拡大/縮小の中心点 x:中心点のX座標 y:中心点のY座標 ---- ・傾斜:Skew 指定したX軸値・Y軸値および中心点を持つ傾斜 変換 Matrix3x2F Skew( FLOAT angleX, FLOAT angleY, D2D1_POINT_2F centerPoint FLOAT x, FLOAT y ); angleX:X軸の傾斜角度(Y軸からの反時計回りの度単位) angleY:Y軸の傾斜角度(X軸からの反時計回りの度単位) centerPoint:傾斜の中心点 x:中心点のX座標 y:中心点のY座標 ---- ・平行移動:Translate 指定したX軸方向およびY軸方向の変位を持つ移動 変換 Matrix3x2F Translation( D2D1_SIZE_F size FLOAT x, FLOAT y ); size x:X軸方向の変位 y:Y軸方向の変位 ---- [[画像変換]] ----