示例#1
0
文件: Shape.cs 项目: kaldap/XnaFlash
        public void Draw(IVGRenderContext<Movie.DisplayState> target)
        {
            int i, e;
            float factor;
            var state = target.State;
            var matrix = state.PathToSurface.Matrix;
            var scaleX = matrix.ScaleX;
            var scaleY = matrix.ScaleY;
            var scaleAvg = (scaleX + scaleY) / 2f;

            foreach (var shape in _subShapes)
            {
                for (i = 0, e = shape._fills.Length; i < e; i++)
                {
                    state.PathToFillPaint.Push(shape._fills[i].FillMatrix);
                    state.SetFillPaint(shape._fills[i].Paint);
                    target.DrawPath(shape._fills[i].Path, VGPaintMode.Fill);
                    state.PathToFillPaint.Pop();
                }

                for (i = 0, e = shape._strokes.Length; i < e; i++)
                {
                    if (shape._strokes[i].ScaleX && shape._strokes[i].ScaleY)
                        factor = scaleAvg;
                    else if (shape._strokes[i].ScaleX)
                        factor = scaleX;
                    else if (shape._strokes[i].ScaleY)
                        factor = scaleY;
                    else
                        factor = 1f;

                    state.NonScalingStroke = true;
                    state.PathToStrokePaint.Push(shape._strokes[i].FillMatrix);
                    state.SetStrokePaint(shape._strokes[i].Paint);
                    state.StrokeThickness = Math.Max(2f, shape._strokes[i].Thickness * factor);
                    target.DrawPath(shape._strokes[i].Path, VGPaintMode.Stroke);
                    state.PathToStrokePaint.Pop();
                }
            }
        }
示例#2
0
文件: Text.cs 项目: kaldap/XnaFlash
 public void Draw(IVGRenderContext<Movie.DisplayState> target)
 {
     target.State.PathToSurface.PushCombineLeft(Matrix);
     foreach (var part in TextParts)
     {
         target.State.SetFillPaint(part.Tag as VGPaint);
         target.DrawPath(part, VGPaintMode.Fill);
     }
     target.State.PathToSurface.Pop();
 }