2016-07-30 20 views

答えて

0

変換は、3x3の行列に格納され、それがマトリックスの成分のそれぞれが何をするのか直感的に伝えるのは難しいされています。そのため、連携する一連の機能が用意されており、連携することができます。あなたは時計回りに90度の範囲で画像を回転させ、その後、それが2倍に作ることにしたい場合たとえば、あなたが

Matrix myMatrix = new Matrix(); 
myMatrix.Rotate(90); 
myMatrix.Scale(2, 2, MatrixOrder.Append); 

を使用することができますMatrixOrder.Appendは、スケーリングが前回の変換(注文後に行われなければならないことを示しますここで重要です)。

使用する主な機能は次のとおり

  • RotateAt(Single a, Point o)
  • Scale(Single a, Single b)周辺の画像を時計回りに回転させるXに画像をスケーリングし、Y軸 - 基本的には、(x、y)はとなります( ax、by)
  • Translate(Single a, Single b)は、X軸とY軸の画像を平行移動します。基本的に(x、y)は(a + x、b + y)になります。

イメージを垂直に反転するには、単にScale(-1, 1)が必要です。各点(x、y)は(-x、y)に変換されます。軸y = 0以外の垂直軸を中心に画像を反転する必要がある場合は、Translateと組み合わせる必要があります。

数学的に言えば、任意のアフィン変換は、平行移動、回転、およびスケーリングの行列の積に分解することができます。使用しているAPIには、計算をやりたくない場合は、Shearなどの便利機能がいくつか用意されています。

Hereより詳しい説明です。最後にいくつかのコードが含まれています。

関連する問題