Exemplo n.º 1
0
        public virtual BitmapData clone()
        {
            var bitmapData = new BitmapData();
            var canvas     = new HTMLCanvasElement();

            canvas.Width  = this.width;
            canvas.Height = this.height;
            var context2d = canvas.GetContext(CanvasTypes.CanvasContext2DType.CanvasRenderingContext2D);
            var ctx       = new RenderingContext2D(context2d);

            this.drawSelf(context2d, 0, 0, this.width, this.height);
            bitmapData.internalImage = context2d;
            return(bitmapData);
        }
Exemplo n.º 2
0
        public virtual void draw(IBitmapDrawable source, Matrix matrix = null, ColorTransform colorTransform = null, string blendMode = null, Rectangle clipRect = null, bool smoothing = false)
        {
            var sourceDisplayObject = source as DisplayObject;

            if (sourceDisplayObject != null)
            {
                if (clipRect != null)
                {
                    this.width  = (int)clipRect.width;
                    this.height = (int)clipRect.height;
                }
                else
                {
                    this.width  = (int)sourceDisplayObject.width;
                    this.height = (int)sourceDisplayObject.height;
                }

                if (matrix != null)
                {
                    sourceDisplayObject.transform.matrix = matrix;
                }

                if (colorTransform != null)
                {
                    sourceDisplayObject.transform.colorTransform = colorTransform;
                }

                RenderingContext2D       ctx;
                CanvasRenderingContext2D result;
                if (_internalImage.FastAs <CanvasRenderingContext2D>() != null)
                {
                    ctx    = new RenderingContext2D((CanvasRenderingContext2D)_internalImage);
                    result = (CanvasRenderingContext2D)_internalImage;
                }
                else
                {
                    var canvas = new HTMLCanvasElement();
                    canvas.Width  = this.width;
                    canvas.Height = this.height;
                    var context2d = canvas.GetContext(CanvasTypes.CanvasContext2DType.CanvasRenderingContext2D);
                    ctx = new RenderingContext2D(context2d);
                    this.drawSelf(context2d, 0, 0, this.width, this.height);
                    result = context2d;
                }

                ctx.ctx.Save();
                if (clipRect != null)
                {
                    ctx.ctx.Rect(clipRect.x, clipRect.y, clipRect.width, clipRect.height);
                    ctx.ctx.Clip();
                }

                if (matrix != null)
                {
                    ctx.SetTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);
                }

                if (blendMode != null)
                {
                    ctx.blendMode = blendMode;
                }

                sourceDisplayObject.draw(ctx);
                internalImage = result;
                ctx.ctx.Restore();
            }
        }