/// <summary>
        ///		Carga una serie de transformaciones
        /// </summary>
        internal TransformModelCollection LoadTransforms(MLNode nodeML)
        {
            TransformModelCollection transforms = new TransformModelCollection();

            // Carga las transformaciones
            foreach (MLNode childML in nodeML.Nodes)
            {
                switch (childML.Name)
                {
                case ComicRepositoryConstants.TagTranslate:
                    transforms.Add(new TranslateTransformModel(childML.Attributes[ComicRepositoryConstants.TagTop].Value.GetDouble(0),
                                                               childML.Attributes[ComicRepositoryConstants.TagLeft].Value.GetDouble(0)));
                    break;

                case ComicRepositoryConstants.TagMatrix:
                    transforms.Add(new MatrixTransformModel(childML.Attributes[ComicRepositoryConstants.TagData].Value));
                    break;

                case ComicRepositoryConstants.TagRotate:
                    transforms.Add(new RotateTransformModel(childML.Attributes[ComicRepositoryConstants.TagAngle].Value.GetDouble(0),
                                                            Mediator.CommonRepository.GetPoint(childML.Attributes[ComicRepositoryConstants.TagOrigin].Value,
                                                                                               0.5, 0.5)));
                    break;

                case ComicRepositoryConstants.TagScale:
                    transforms.Add(new ScaleTransformModel(childML.Attributes[ComicRepositoryConstants.TagScaleX].Value.GetDouble(1),
                                                           childML.Attributes[ComicRepositoryConstants.TagScaleY].Value.GetDouble(1),
                                                           Mediator.CommonRepository.GetPoint(childML.Attributes[ComicRepositoryConstants.TagCenter].Value,
                                                                                              0.5, 0.5)));
                    break;
                }
            }
            // Devuelve la colección de transformaciones
            return(transforms);
        }
예제 #2
0
        /// <summary>
        ///		Obtiene las transformaciones de la figura
        /// </summary>
        internal static Transform GetTransforms(TransformModelCollection transforms)
        {
            Transform transform = new TranslateTransform(0, 0);

            // Obtiene las transformaciones de la figura
            if (transforms != null && transforms.Count > 0)
            {
                // Crea un grupo de transformaciones
                transform = new TransformGroup();
                // Añade las transformaciones de la figura
                foreach (AbstractTransformModel figureTransform in transforms)
                {
                    if (figureTransform is TranslateTransformModel)
                    {
                        (transform as TransformGroup).Children.Add(ConvertTransform(figureTransform as TranslateTransformModel));
                    }
                    else if (figureTransform is MatrixTransformModel)
                    {
                        (transform as TransformGroup).Children.Add(ConvertTransform(figureTransform as MatrixTransformModel));
                    }
                    else if (figureTransform is RotateTransformModel)
                    {
                        (transform as TransformGroup).Children.Add(ConvertTransform(figureTransform as RotateTransformModel));
                    }
                    else if (figureTransform is ScaleTransformModel)
                    {
                        (transform as TransformGroup).Children.Add(ConvertTransform(figureTransform as ScaleTransformModel));
                    }
                }
            }
            // Devuelve la transformación
            return(transform);
        }