HIK Elektronikus Felsőoktatási Tankönyv- és Szakkönyvtár
A Kempelen Farkas Felsőoktatási Digitális Tankönyvtár/vagy más megjelenítő által közvetített digitális tartalmat a felhasználó a szerzői jogról szóló 1999. évi LXXVI. tv. 33. paragrafus (4) bekezdésében meghatározott oktatási, illetve tudományos kutatási célra használhatja fel. A felhasználó a digitális tartalmat képernyőn megjelenítheti, letöltheti, arról elektronikus adathordozóra vagy papíralapon másolatot készíthet, adatrögzítő rendszerében tárolhatja. A Kempelen Farkas Felsőoktatási Digitális Tankönyvtár/vagy más megjelenítő weblapján található digitális tartalmak üzletszerû felhasználása tilos, valamint kizárt a digitális tartalom módosítása és átdolgozása, illetve az ilyen módon keletkezett származékos anyag további felhasználása.

17.11.2. Második példa:

A következő példában három myMatrix által definiált ponttranszformációk szorzatát állítjuk elő a myMatrix.Multiply metódussal, majd a Graphics.Transform metódussal végrehajtjuk a transzformációt a Graphics objektumain, egy téglalapot érintő ellipszisen. A Multiply metódus MatrixOrder paramétere határozza meg a mátrix szorzás sorrendjét, amelynek lehetséges értékei:

  • Append: az új transzformációt a régi után kell végrehajtani

  • Prepend: az új transzformációt a régi előtt kell végrehajtani

Formális leírása a transzformációnak

{

Pen myPen = new Pen(Color.Blue, 1);

Pen myPen2 = new Pen(Color.Red, 1);

double alpha=30*Math.PI/180;

// Mátrixok inicializálása:

// Skálázás.

Matrix myMatrix1 = new Matrix(2.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f);

// Elforgatás 30 fokkal.

Matrix myMatrix2 = new Matrix(

(float)Math.Cos(alpha),(float)Math.Sin(alpha),

(float)-Math.Sin(alpha),(float)Math.Cos(alpha),

0.0f, 0.0f);

// Eltolás.

Matrix myMatrix3 = new Matrix(1.0f, 0.0f, 0.0f, 1.0f, 150.0f, 50.0f);

// Matrix1 és Matrix2 összeszorzása.

myMatrix1.Multiply(myMatrix2, MatrixOrder.Append);

// A szorzat mátrix szorzása Matrix3-mal.

myMatrix1.Multiply(myMatrix3, MatrixOrder.Append);

// Érintő ellipszis rajzolása:

e.Graphics.DrawRectangle(myPen, 0, 0, 100, 100);

e.Graphics.DrawEllipse(myPen, 0, 0, 100, 100);

// A szozat transzformáció végrehajtása a Graphics objektumain:

e.Graphics.Transform = myMatrix1;

// Érintő ellipszis megrajzolása a transzformáció után:

e.Graphics.DrawRectangle(myPen2, 0, 0, 100, 100);

e.Graphics.DrawEllipse(myPen, 0, 0, 100, 100);

}

Skálázott, eltolt és elforgatott érintő ellipszis