Esempio n. 1
0
	    private void CanvasAnimatedControl_OnCreateResources(CanvasAnimatedControl sender, CanvasCreateResourcesEventArgs args)
	    {
			// blobs
			_blobs = new List<Blob>();
			var rnd = new Random();
		    for (int i = 0; i < BlobCount; i++)
		    {
			    _blobs.Add(new Blob
			    {
				    Position = new Vector2((float) (rnd.NextDouble()*sender.Size.Width), (float) (rnd.NextDouble()*sender.Size.Height)),
				    Velocity = new Vector2(BlobVelocityScale *  (float) ((rnd.NextDouble()*3.0f) - 1.5f), BlobVelocityScale * (float) ((rnd.NextDouble()*3.0f) - 1.5f))
			    });
		    }
			// texture
		    var rgb = new CanvasRadialGradientBrush(sender, new[]
		    {
				new CanvasGradientStop
				{
					Color = Color.FromArgb(255, 128, 128, 255),
					Position = 0.0f
				},
				new CanvasGradientStop
				{
					Color = Color.FromArgb(128, 128, 128, 255),
					Position = 0.6f
				},
				new CanvasGradientStop
				{
					Color = Color.FromArgb(0, 128, 128, 255),
					Position = 1.0f
				}
		    });
		    rgb.RadiusX = rgb.RadiusY = BlobSize;
		    _blobBrush = rgb;
			// table transfer table
			ttt = new List<float>();
			for (int i = 0; i < 100; i++)
			{
				ttt.Add(i < Threshold ? 0.0f : 1.0f);
			}
			// setup
			_blobRenderTarget = new CanvasRenderTarget(sender, sender.Size);
			_pre = new PremultiplyEffect {Source = _blobRenderTarget};
			_tte = new TableTransferEffect {ClampOutput = true, Source = _pre};
			_tte.AlphaTable = _tte.RedTable = _tte.GreenTable = _tte.BlueTable = ttt.ToArray();
			_un = new UnPremultiplyEffect {Source = _tte};
			_gbe = new GaussianBlurEffect {BlurAmount = 8.0f, Source = _un};
		    _mask = new CanvasImageBrush(sender) {SourceRectangle = new Rect(new Point(), sender.Size)};
	    }
Esempio n. 2
0
        public void Loadd()
        {
            MAIN = new Transform2DEffect {
                Source = Shape,
            };

            var c = color;

            c.A = (byte)(255 * (density));
            ICanvasImage Main()
            {
                if (Texture == null)
                {
                    return(MAIN);
                }
                return(new ArithmeticCompositeEffect {
                    Source1 = MAIN,
                    Source2 = new TileEffect {
                        Source = Texture,
                        SourceRectangle = new Rect(0, 0, Texture.Size.Width, Texture.Size.Height)
                    },
                    MultiplyAmount = 1,
                    Source1Amount = 0,
                    Source2Amount = 0,
                });
            }

            ICanvasImage Color()
            {
                var cc = new PremultiplyEffect {
                    Source = new ColorSourceEffect {
                        Color = c
                    }
                };

                if (blend == 0 && dilution == 0)
                {
                    ECAN = null;
                    return(cc);
                }
                ECAN = new TileEffect {
                    Source = new GaussianBlurEffect {
                        Source = Canvas,
                    }
                };
                return(new ArithmeticCompositeEffect {
                    Source1 = new CompositeEffect {
                        Sources =
                        {
                            new PremultiplyEffect    {
                                Source = cc
                            },
                            new LinearTransferEffect {
                                Source = ECAN, AlphaSlope = blend
                            }
                        }
                    },
                    MultiplyAmount = 0,
                    Source1Amount = 1 - dilution,
                    Source2 = ECAN,
                    Source2Amount = dilution,
                });
            }

            MASK = new LuminanceToAlphaEffect {
                Source = Main(),
            };
            ERAS = new ArithmeticCompositeEffect {
                Source1 = Color(),
                Source2 = new InvertEffect {
                    Source = new LuminanceToAlphaEffect {
                        Source = Main(),
                    }
                },
                MultiplyAmount = 1,
                Source1Amount  = 0,
                Source2Amount  = 0,
            };
        }