private void changeTurnPoint() { SLine cur = points[curLineIndex]; cur.turnPoint.X = cur.getRotateX(); cur.turnPoint.Y = cur.getRotateY(); points[curLineIndex] = cur; }
//масшатабирование линии + коеф. Х + коеф. У в разных режимых public void scale2D(ref SLine figure, float x, float y) { float dx = figure.getRotateX(); float dy = figure.getRotateY(); if (x > 10000 || y > 10000) { return; } figure.affinMatrix.Translate(-dx, -dy, MatrixOrder.Append); figure.affinMatrix.Scale(x, y, MatrixOrder.Append); figure.affinMatrix.Translate(dx, dy, MatrixOrder.Append); }
//масштабирование с использованием матриц (без c# WinForms api) private void naturalScale(ref SLine figure, float x, float y) { float dx = figure.getRotateX(); float dy = figure.getRotateY(); //матрица переноса центра в ноль Matrix amx = new Matrix(1, 0, 0, 1, -dx, -dy); //применяем матрицу figure.affinMatrix.Multiply(amx, MatrixOrder.Append); //масштабирование amx = new Matrix(x, 0, 0, y, 0, 0); figure.affinMatrix.Multiply(amx, MatrixOrder.Append); //матрица возврощения обратно amx = new Matrix(1, 0, 0, 1, dx, dy); figure.affinMatrix.Multiply(amx, MatrixOrder.Append); //figure.applyAffinMatrix(); }