Как сделать снимок экрана формы MDI при нажатии на любой элемент меню Toolstrip - PullRequest
0 голосов
/ 16 марта 2011

Упомянутый ниже код C #, который я пробовал, но во время создания снимка, изображение также содержит часть меню открытого файла. Мне нужна помощь для захвата экрана после нажатия кнопки и до нажатия кнопки сохранения, но она не должна содержать часть открытого меню файла

private void saveImageToolStripMenuItem_Click(object sender, EventArgs e)
{

    String filename = "";           
    Bitmap screen = new Bitmap(network_drawing_panel.Width, network_drawing_panel.Height - 50);
    using (Graphics g = Graphics.FromImage(screen))
    {
        g.CopyFromScreen(0, 80, 0, 0, screen.Size);
    }



    //   SaveFileDialog
    SaveFileDialog dlg = new SaveFileDialog();
    dlg.InitialDirectory = @"C:\\images";
    dlg.DefaultExt = ".jpg";
    dlg.Filter = "JPEG Images (.jpg)|*.jpg|All files (*.*)|*.*";
    dlg.Title = "Save an Image file";

    if (dlg.ShowDialog() == DialogResult.OK)
    {
        filename = dlg.FileName;          


        try
        {
            screen.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
        catch (Exception c)
        {
            Console.WriteLine(c.ToString());
        }


    }

}

это снимок, который я получил.

1 Ответ

0 голосов
/ 16 марта 2011

Родной способ сделать это - использовать PostMessage. Это позволяет текущей отправке полностью завершиться перед выполнением операции.

Для WinForms эквивалент PostMessage равен Control.BeginInvoke (форма - это элемент управления). WinForms фактически использует PostMessage для выполнения делегатов из BeginInvoke.

...