当前位置: 代码迷 >> C# >> [Winform]截图程序遇到点小疑点
  详细解决方案

[Winform]截图程序遇到点小疑点

热度:6   发布时间:2016-05-05 03:23:01.0
[Winform]截图程序遇到点小问题求助
界面大概是这么个样子,最后保存的是方框内的图像
原理是截全屏图像,设置为全屏无边框窗体的背景图,调整方框大小位置后保存区域内图像到文件。

现在遇到点小问题,比如我其他窗体都关掉然后在桌面上截图,最后保存到桌面上(此时程序并没有退出),怎么才能显示出桌面上新添加的那个文件?

这个是我的方法,无效,我整个贴出来好了:

private void pictureBox1_Click(object sender, EventArgs e)
        {
            #region 方法一
            outputBmp = new Bitmap(this.BackgroundImage).Clone(this.mainRect, this.BackgroundImage.PixelFormat);
            #endregion 方法一

            #region 方法二
            /*
            outputBmp = new Bitmap(this.mainRect.Size.Width, this.mainRect.Size.Height);
            Graphics _g = Graphics.FromImage(outputBmp);
            _g.CopyFromScreen(
                PointToScreen(this.mainRect.Location),
                new Point(0, 0),
                this.mainRect.Size);
            */
            #endregion 方法二

            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "Bmp图像文件|*.bmp|Jpeg图像文件|*.jpeg|Gif图像文件|*.gif|Png图像文件|*.png|Icon图像文件|*.ico";
            sfd.FileName = getFilename();
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    string filter = sfd.FileName.Substring(sfd.FileName.LastIndexOf('.') + 1);
                    switch (filter)
                    {
                        case "bmp": outputBmp.Save(sfd.FileName, ImageFormat.Bmp); break;
                        case "jpeg": outputBmp.Save(sfd.FileName, ImageFormat.Jpeg); break;
                        case "gif": outputBmp.Save(sfd.FileName, ImageFormat.Gif); break;
                        case "png": outputBmp.Save(sfd.FileName, ImageFormat.Png); break;
                        case "ico": outputBmp.Save(sfd.FileName, ImageFormat.Icon); break;
                    }
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
                finally
                {
                    Graphics _g = Graphics.FromImage(ScreenBmp);
                    _g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
                    this.BackgroundImage = ScreenBmp;
                    _g.Dispose();
                }
            }
        }

        private string getFilename()
        {
            string t = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss");
            return "我的截图_" + t;
        }

表达能力差,希望看懂意思的大哥(shu)大姐(ma)帮忙看下怎么解决、、
------解决思路----------------------
桌面被你的 全屏无边框窗体 挡住了,怎么能看见后增加的文件图标呢?
你应该重新截图吧?就打算你能在窗体上打洞,但也不知道那个图标在哪里呀
  相关解决方案