public override BitmapBase Apply(Tank tank, BitmapBase layer)
 {
     if (_blur == null || _blur.Radius != Radius)
         lock (this)
             if (_blur == null || _blur.Radius != Radius)
                 _blur = new GaussianBlur(Radius);
     layer.Blur(_blur, Edge);
     return layer;
 }
        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);
                    }
            }
            layer.Blur(_blur, Edge);
            return(layer);
        }
Exemple #3
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);
        }