public override void Draw(Graphics g) { float k = Math.Min(1f, Life / 100); var color = ParticleColorful.MixColor(ToColor, FromColor, k); // матрица преобразования цвета ColorMatrix matrix = new ColorMatrix(new float[][] { new float[] { 0, 0, 0, 0, 0 }, // умножаем текущий красный цвет на 0 new float[] { 0, 0, 0, 0, 0 }, // умножаем текущий зеленый цвет на 0 new float[] { 0, 0, 0, 0, 0 }, // умножаем текущий синий цвет на 0 new float[] { 0, 0, 0, k, 0 }, // тут подставляем k который прозрачность задает new float[] { (float)color.R / 255, (float)color.G / 255, (float)color.B / 255, 0, 1F } }); // устанавливает матрицу в качестве атрибута ImageAttributes imageAttributes = new ImageAttributes(); imageAttributes.SetColorMatrix(matrix); g.DrawImage(image, // куда рисовать new Rectangle((int)(X - Radius), (int)(Y - Radius), Radius * 2, Radius * 2), // и какую часть исходного изображения брать 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, // надо передать imageAttributes // наши атрибуты с матрицей преобразования ); }
public override Particle CreateParticle() { var particle = ParticleColorful.Generate(); particle.FromColor = Color.Yellow; particle.ToColor = Color.FromArgb(0, Color.Magenta); particle.X = Position.X; particle.Y = Position.Y; return(particle); }
public Color ToColor = Color.White; // конечный цвет public override Particle CreateParticle() { var particle = ParticleColorful.Generate(); particle.FromColor = this.FromColor; particle.ToColor = Color.FromArgb(0, this.ToColor); particle.Direction = this.Direction + Particle.rand.Next(-Spread / 2, Spread / 2); particle.Radius = this.Radius + Particle.rand.Next(5); particle.X = Position.X; particle.Y = Position.Y; return(particle); }