private void Transform(DrawableAffine affine)
    {
      double scaleX = ScaleX;
      double scaleY = ScaleY;
      double shearX = ShearX;
      double shearY = ShearY;
      double translateX = TranslateX;
      double translateY = TranslateY;

      ScaleX = (scaleX * affine.ScaleX) + (shearY * affine.ShearX);
      ScaleY = (shearX * affine.ShearY) + (scaleY * affine.ScaleY);
      ShearX = (shearX * affine.ScaleX) + (scaleY * affine.ShearX);
      ShearY = (scaleX * affine.ShearY) + (shearY * affine.ScaleY);
      TranslateX = (scaleX * affine.TranslateX) + (shearY * affine.TranslateY) + translateX;
      TranslateY = (shearX * affine.TranslateX) + (scaleY * affine.TranslateY) + translateY;
    }
Exemple #2
0
        private void Transform(DrawableAffine affine)
        {
            double scaleX     = ScaleX;
            double scaleY     = ScaleY;
            double shearX     = ShearX;
            double shearY     = ShearY;
            double translateX = TranslateX;
            double translateY = TranslateY;

            ScaleX     = (scaleX * affine.ScaleX) + (shearY * affine.ShearX);
            ScaleY     = (shearX * affine.ShearY) + (scaleY * affine.ScaleY);
            ShearX     = (shearX * affine.ScaleX) + (scaleY * affine.ShearX);
            ShearY     = (scaleX * affine.ShearY) + (shearY * affine.ScaleY);
            TranslateX = (scaleX * affine.TranslateX) + (shearY * affine.TranslateY) + translateX;
            TranslateY = (shearX * affine.TranslateX) + (scaleY * affine.TranslateY) + translateY;
        }
Exemple #3
0
        private void Transform(DrawableAffine affine)
        {
            double scaleX     = ScaleX;
            double scaleY     = ScaleY;
            double shearX     = ShearX;
            double shearY     = ShearY;
            double translateX = TranslateX;
            double translateY = TranslateY;

            ScaleX     = scaleX * affine.ScaleX + shearY * affine.ShearX;
            ScaleY     = shearX * affine.ShearY + scaleY * affine.ScaleY;
            ShearX     = shearX * affine.ScaleX + scaleY * affine.ShearX;
            ShearY     = scaleX * affine.ShearY + shearY * affine.ScaleY;
            TranslateX = scaleX * affine.TranslateX + shearY * affine.TranslateY + translateX;
            TranslateY = shearX * affine.TranslateX + scaleY * affine.TranslateY + translateY;
        }
    public void Test_Constructor_Matrix()
    {
      Matrix matrix = null;

      ExceptionAssert.Throws<ArgumentNullException>(() =>
      {
        new DrawableAffine(matrix);
      });

      matrix = new Matrix(11, 12, 21, 22, 0, 1);
      DrawableAffine affine = new DrawableAffine(matrix);
      Assert.AreEqual(11, affine.ScaleX);
      Assert.AreEqual(12, affine.ScaleY);
      Assert.AreEqual(21, affine.ShearX);
      Assert.AreEqual(22, affine.ShearY);
      Assert.AreEqual(0, affine.TranslateX);
      Assert.AreEqual(1, affine.TranslateY);
    }
    /// <summary>
    /// Skew to use in Y axis
    /// </summary>
    /// <param name="skewY">The Y skewing element.</param>
    public void TransformSkewY(double skewY)
    {
      DrawableAffine affine = new DrawableAffine();

      affine.ShearY = Math.Tan(DegreesToRadians(Math.IEEERemainder(skewY, 360.0)));

      Transform(affine);
    }
    /// <summary>
    /// Sets the scale to use.
    /// </summary>
    /// <param name="scaleX">The X coordinate scaling element.</param>
    /// <param name="scaleY">The Y coordinate scaling element.</param>
    public void TransformScale(double scaleX, double scaleY)
    {
      DrawableAffine affine = new DrawableAffine();

      affine.ScaleX = scaleX;
      affine.ScaleY = scaleY;

      Transform(affine);
    }
    /// <summary>
    /// Rotation to use.
    /// </summary>
    /// <param name="angle">The angle of the rotation.</param>
    public void TransformRotation(double angle)
    {
      DrawableAffine affine = new DrawableAffine();

      affine.ScaleX = Math.Cos(DegreesToRadians(Math.IEEERemainder(angle, 360.0)));
      affine.ScaleY = Math.Cos(DegreesToRadians(Math.IEEERemainder(angle, 360.0)));
      affine.ShearX = -Math.Sin(DegreesToRadians(Math.IEEERemainder(angle, 360.0)));
      affine.ShearY = Math.Sin(DegreesToRadians(Math.IEEERemainder(angle, 360.0)));

      Transform(affine);
    }
    /// <summary>
    /// Sets the origin of coordinate system.
    /// </summary>
    /// <param name="translateX">The X coordinate of the translation element.</param>
    /// <param name="translateY">The Y coordinate of the translation element.</param>
    public void TransformOrigin(double translateX, double translateY)
    {
      DrawableAffine affine = new DrawableAffine();

      affine.TranslateX = translateX;
      affine.TranslateY = translateY;

      Transform(affine);
    }
 public void Test_AffineTransform()
 {
   using (MagickImage image = new MagickImage(Files.Builtin.Wizard))
   {
     DrawableAffine affineMatrix = new DrawableAffine(1, 0.5, 0, 0, 0, 0);
     image.AffineTransform(affineMatrix);
     Assert.AreEqual(482, image.Width);
     Assert.AreEqual(322, image.Height);
   }
 }