public Stream genGIF() { var store = new FrameStore(videoFrames.Length, videoFrames[0].Width, videoFrames[0].Height); foreach (var frame in videoFrames) { store.PushFrame(frame); } float delay = 1.0f / Settings.FPS; delay *= 100.0f; Stream myStream = new MemoryStream(1024); store.ExportGif(myStream, (int)delay); return(myStream); }
public GameState ZoomUpdate(GameTime gameTime) { if (state.zoomedPic.editEquationButton.WasLeftClicked(state.inputState)) { state.screen = Screen.EDIT; state.zoomedPic.textBox.cursorPos = new Point(0, 0); state.zoomedPic.textBox.SetActive(true); return(state); } if (state.zoomedPic.playButton.WasLeftClicked(state.inputState)) { state.zoomedPic.GenVideo(state, Settings.VIDEO_WIDTH_LOW, Settings.VIDEO_HEIGHT_LOW); } if (state.zoomedPic.playHDButton.WasLeftClicked(state.inputState)) { state.zoomedPic.GenVideo(state, Settings.VIDEO_WIDTH_HI, Settings.VIDEO_HEIGHT_HI); } if (state.zoomedPic.exportGIFButton.WasLeftClicked(state.inputState)) { _ = state.zoomedPic.exportGIF(state); } if (state.zoomedPic.exportPNGButton.WasLeftClicked(state.inputState)) { var pic = state.zoomedPic; var store = new FrameStore(1, pic.bigImage.Width, pic.bigImage.Height); store.PushFrame(pic.bigImage); Stream myStream; System.Windows.Forms.SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); saveFileDialog1.Filter = "png images (*.png)|*.png"; saveFileDialog1.FilterIndex = 0; saveFileDialog1.RestoreDirectory = false; if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if ((myStream = saveFileDialog1.OpenFile()) != null) { store.ExportFrame(myStream, 0); myStream.Close(); } } } if (state.zoomedPic.WasRightClicked(state.inputState) || TextUtils.IsKey(Keys.Escape, state.inputState)) { state.zoomedPic.imageCancellationSource.Cancel(); state.zoomedPic.imageCancellationSource = new CancellationTokenSource(); state.screen = Screen.CHOOSE; state.zoomedPic.zoomed = false; state.zoomedPic = null; LayoutUI(); return(state); } return(state); }