public void Draw(float delta) { PSprite last = null; Parallel.For(completed, completed + imagesPerFrame + 1, i => { if (i < imageCount) { var input = PSprite.FromFilePath(@"E\image-" + (i + 1).ToString("00000") + ".png"); input = Convert(input); input.Save(@"E\out-" + i.ToString("00000") + ".png"); last = input; } else { Console.WriteLine("A"); } }); if (last != null) { Art.DrawImage(last, 0, 0, Width, Height); } completed += imagesPerFrame; }
public void Setup() { var i = 1; var name = "image-" + i.ToString("00000") + ".png"; while (File.Exists(@"E\" + name)) { imageCount++; i++; name = "image-" + i.ToString("00000") + ".png"; } Art.DrawImage(Convert(PSprite.FromFilePath("b.png")), 0, 0, Width, Height); }
public void Draw(float delta) { var spritePath = Images[i]; var sprite = PSprite.FromFilePath(spritePath); var pixels = sprite.Art.GetPixels(); //for (var i = 0; i < Width * Height; i++) //{ // var index = (i * 4) + 2; // pixels[index] = 0; //} var max = Width * Height * 4; for (var index = 2; index < max; index += 4) { pixels[index] = 0; } sprite.Art.SetPixels(pixels); sprite.Save($@"LargestStar\OutImages\{i:000000}.png"); Art.DrawImage(sprite, 0, 0, Width, Height); i++; }
public override void Draw(float delta) { //Title($"FPS: {Timing.ActualFramesPerSecond}/{Timing.TargetFramesPerSecond}"); Art.Background(Paint.Black); var mag = 0f; Particles.ForEach(p => mag += p.Velocity.SquareMagnitude); mag /= Particles.Count; mag *= 1; var frame = new Sprite(Width, Height); var pixels = frame.Art.GetPixels(); foreach (var p in Particles) { //p.Position = new Vector2() //{ // X = p.Position.X % Width, // Y = p.Position.Y % Height, //}; //p.Position = new Vector2() //{ // X = p.Position.X < 0 ? p.Position.X + Width - 1 : p.Position.X, // Y = p.Position.Y < 0 ? p.Position.Y + Height - 1 : p.Position.Y, //}; var pass = ((int)p.Position.X >= Width || (int)p.Position.Y >= Height || (int)p.Position.X < 0 || (int)p.Position.Y < 0); if (!pass) { var pixelIndex = ((int)p.Position.X + ((int)p.Position.Y * Width)) * 4; var color = (p.Velocity.SquareMagnitude / mag) * 255; color = color > 255 ? 255 : color < 0 ? 0 : color; pixels[pixelIndex] = 255; pixels[pixelIndex + 1] = 255; pixels[pixelIndex + 2] = 255; pixels[pixelIndex + 3] = 255; } p.Position += p.Velocity * delta; //if (MouseIsDown) //{ var positions = new List <Vector2>() { MousePosition, //new Vector2(0, 0), }; var forces = positions.ConvertAll( p2 => Vector2.Right.Rotate(Vector2.Zero, p.Position.AngleToRadians(p2)) / (p.Position.DistanceFrom(p2).Square() / 1000) ); var average = Vector2.Zero; foreach (var f in forces) { average += f; } average /= forces.Count; average *= 10; p.Velocity += (average * Timing.TargetFramesPerSecond) * delta; //} p.Velocity *= 0.99f; } frame.Art.SetPixels(pixels); PreviousFrames.Add(frame); if (PreviousFrames.Count > TailSize) { PreviousFrames.RemoveAt(0); } foreach (var f in PreviousFrames) { Art.DrawImage(f, 0, 0, Width, Height); } //var magSum = 0f; //Particles.ForEach(p => magSum += p.Velocity.Magnitude); //magSum /= Particles.Count; //Title(magSum); //Art.Fill(Paint.White); //Art.Stroke(Paint.Black); //Art.StrokeWeight(1f); //Art.TextFont("Airal", 36f); //Art.Text(MousePosition + " " + MouseIsDown, 300, 300); }