private void exportCompositeImageToolStripMenuItem_Click(object sender, EventArgs e) { try { Bitmap bitmap; //capture image var location = PointToScreen(picCharacter.Location); using (bitmap = new Bitmap(picCharacter.Width, picCharacter.Height)) { cboCharacter.Visible = false; btnExportChar.Visible = false; btnRename.Visible = false; btnReplaceChar.Visible = false; var g = Graphics.FromImage(bitmap); g.CopyFromScreen(new Point(location.X, location.Y), Point.Empty, picCharacter.Size, CopyPixelOperation.SourceCopy); cboCharacter.Visible = true; btnExportChar.Visible = true; btnRename.Visible = true; btnReplaceChar.Visible = true; //this is so image quality is higher than the default var myEncoder = Encoder.Quality; var myEncoderParameters = new EncoderParameters(1); const long encoder = 100L; var myEncoderParameter = new EncoderParameter(myEncoder, encoder); myEncoderParameters.Param[0] = myEncoderParameter; var myImageCodecInfo = Tools.GetEncoderInfo("image/png"); //prepare to prompt user for save location and extension var sfd = new SaveFileDialog { Filter = "PNG Image|*.png", Title = "Where should I save the image to?", FileName = cboCharacter.Items[cboCharacter.SelectedIndex] + "_composite", AddExtension = true, InitialDirectory = Tools.CurrentFolder }; if (sfd.ShowDialog() != DialogResult.OK || string.IsNullOrWhiteSpace(sfd.FileName)) { return; } Log("Exporting composite character image..."); Tools.DeleteFile(sfd.FileName); Tools.CurrentFolder = Path.GetDirectoryName(sfd.FileName); //save image bitmap.Save(sfd.FileName, myImageCodecInfo, myEncoderParameters); } Log("Exported composite character image successfully"); } catch (Exception ex) { Log("Exporting composite character image failed"); Log("The error says: " + ex.Message); } Log("Ready"); }
private bool TakeScreenshot(string path) { using (var bitmap = new Bitmap(PanelSize.Width, PanelSize.Height)) { //this method doesn't scale when using display/font scaling - needs fixing var location = new Point(0, 0); Invoke(new MethodInvoker(delegate { location = PointToScreen(panelBackground.Location); })); var g = Graphics.FromImage(bitmap); g.CopyFromScreen(location, new Point(0, 0), PanelSize, CopyPixelOperation.SourceCopy); var myEncoder = Encoder.Quality; var myEncoderParameters = new EncoderParameters(1); var myEncoderParameter = new EncoderParameter(myEncoder, 100L); myEncoderParameters.Param[0] = myEncoderParameter; var myImageCodecInfo = Tools.GetEncoderInfo("image/jpeg"); Tools.DeleteFile(path); bitmap.Save(path, myImageCodecInfo, myEncoderParameters); } return(File.Exists(path)); }