ToTransform() public abstract method

public abstract ToTransform ( ) : Transform
return System.Windows.Media.Transform
示例#1
0
        //==========================================================================
        public virtual Geometry GetGeometry()
        {
            Geometry geometry = GetBaseGeometry();

            if (geometry == null)
            {
                return(null);
            }

            if (Transform != null)
            {
                geometry.Transform = Transform.ToTransform();
            }

            if (ClipPath != null)
            {
                SvgClipPathElement clip_path_element = Document.Elements[ClipPath] as SvgClipPathElement;
                if (clip_path_element != null)
                {
                    Geometry clip_geometry = clip_path_element.GetClipGeometry();
                    if (clip_geometry != null)
                    {
                        return(Geometry.Combine(geometry, clip_geometry, GeometryCombineMode.Intersect, null));
                    }
                }
            }

            return(geometry);
        }
        //==========================================================================
        public virtual Geometry GetGeometry()
        {
            GeometryGroup geometry_group = new GeometryGroup();

            foreach (SvgBaseElement element in Children)
            {
                if (element is SvgDrawableBaseElement)
                {
                    geometry_group.Children.Add((element as SvgDrawableBaseElement).GetGeometry());
                }
                else if (element is SvgDrawableContainerBaseElement)
                {
                    geometry_group.Children.Add((element as SvgDrawableContainerBaseElement).GetGeometry());
                }
            }

            if (Transform != null)
            {
                geometry_group.Transform = Transform.ToTransform();
            }

            if (ClipPath != null)
            {
                SvgClipPathElement clip_path_element = Document.Elements[ClipPath.Id] as SvgClipPathElement;
                if (clip_path_element != null)
                {
                    return(Geometry.Combine(geometry_group, clip_path_element.GetClipGeometry(), GeometryCombineMode.Exclude, null));
                }
            }

            return(geometry_group);
        }
示例#3
0
        //==========================================================================
        public DrawingBrush ToBrush()
        {
            DrawingBrush brush = null;

            if (Reference == null)
            {
                brush = new DrawingBrush(Draw());
            }
            else
            {
                SvgBaseElement element = Document.Elements[Reference];
                if (element is SvgPatternElement)
                {
                    brush = (element as SvgPatternElement).ToBrush();
                }
                else
                {
                    throw new NotSupportedException("Other references than patterns are not supported");
                }
            }

            if (brush == null)
            {
                return(null);
            }

            if ((Width != null) || (Height != null))
            {
                double width  = brush.Drawing.Bounds.Width;
                double height = brush.Drawing.Bounds.Height;
            }

            if (PatternUnits == SvgPatternUnits.UserSpaceOnUse)
            {
                brush.ViewportUnits = BrushMappingMode.Absolute;
                brush.Viewport      = brush.Drawing.Bounds;
            }

            if (PatternTransform != null)
            {
                DrawingGroup drawing_group = new DrawingGroup();
                drawing_group.Transform = PatternTransform.ToTransform();
                drawing_group.Children.Add(brush.Drawing);
                brush.Drawing = drawing_group;
            }

            return(brush);
        }
        //==========================================================================
        protected virtual GradientBrush SetBrush(GradientBrush brush)
        {
            switch (SpreadMethod)
            {
            case SvgSpreadMethod.Pad:
                brush.SpreadMethod = GradientSpreadMethod.Pad;
                break;

            case SvgSpreadMethod.Reflect:
                brush.SpreadMethod = GradientSpreadMethod.Reflect;
                break;

            case SvgSpreadMethod.Repeat:
                brush.SpreadMethod = GradientSpreadMethod.Repeat;
                break;
            }

            switch (GradientUnits)
            {
            case SvgGradientUnits.ObjectBoundingBox:
                brush.MappingMode = BrushMappingMode.RelativeToBoundingBox;
                break;

            case SvgGradientUnits.UserSpaceOnUse:
                brush.MappingMode = BrushMappingMode.Absolute;
                break;
            }

            if (Transform != null)
            {
                brush.Transform = Transform.ToTransform();
            }

            foreach (SvgStopElement stop in Stops)
            {
                brush.GradientStops.Add(stop.ToGradientStop());
            }

            return(brush);
        }