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.Cyan; //Конечный цвет 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.Speed = this.Speed + Particle.rand.Next(20); particle.Life = this.Life + Particle.rand.Next(10); particle.Radius = this.Radius + Particle.rand.Next(2); particle.X = Position.X; particle.Y = Position.Y; return(particle); }