예제 #1
0
        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     // наши атрибуты с матрицей преобразования
                        );
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }