Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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));
        }