Esempio n. 1
0
        public override BitmapBase Apply(RenderTask renderTask, BitmapBase layer)
        {
            Tank tank = renderTask.Tank;

            if (_blur == null || _blur.Radius != Radius)
            {
                lock (this)
                    if (_blur == null || _blur.Radius != Radius)
                    {
                        _blur = new GaussianBlur(Radius);
                    }
            }

            BitmapBase shadow = layer.ToBitmapRam();
            var        color  = Color.GetColorWpf(tank);

            shadow.ReplaceColor(color);
            shadow.Blur(_blur, BlurEdgeMode.Transparent);
            shadow.ScaleOpacity(Spread, OpacityStyle.Additive);
            shadow.Transparentize(color.A);
            layer.DrawImage(shadow, below: true);
            return(layer);
        }