示例#1
0
        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();
        }