[C#]全屏拷贝代码

转载 2007年09月27日 16:29:00

 

要先声明下:这段代码是我转贴过来的。本来作为资料,但是居然还是可以搜索到。CSDN的blog看来还是有bug啊。另外,我将文章类型改为“转贴”,但是似乎文章的头上依然顶着个“原”字。让人也无可奈何。

[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
        
public static extern bool BitBlt(
         IntPtr hdcDest, 
//目标设备的句柄 
         int nXDest, // 目标对象的左上角的X坐标 
         int nYDest, // 目标对象的左上角的X坐标 
         int nWidth, // 目标对象的矩形的宽度 
         int nHeight, // 目标对象的矩形的长度 
         IntPtr hdcSrc, // 源设备的句柄 
         int nXSrc, // 源对象的左上角的X坐标 
         int nYSrc, // 源对象的左上角的X坐标 
         System.Int32 dwRop // 光栅的操作值 
         );

        
public  Bitmap windowFullScreen()//全屏截图程序
        {
            
//建立屏幕Graphics
            Graphics grpScreen = Graphics.FromHwnd(IntPtr.Zero);
            
//根据屏幕大小建立位图
            Bitmap bitmap = new Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height, grpScreen);
            
//建立位图相关Graphics
            Graphics grpBitmap = Graphics.FromImage(bitmap);
            
//建立屏幕上下文
            IntPtr hdcScreen = grpScreen.GetHdc();
            
//建立位图上下文
            IntPtr hdcBitmap = grpBitmap.GetHdc();
            
//将屏幕捕获保存在图位中
            BitBlt(hdcBitmap, 00, bitmap.Width, bitmap.Height, hdcScreen, 000x00CC0020);
            
//关闭位图句柄
            grpBitmap.ReleaseHdc(hdcBitmap);
            
//关闭屏幕句柄
            grpScreen.ReleaseHdc(hdcScreen);
            
//释放位图对像
            grpBitmap.Dispose();
            
//释放屏幕对像
            grpScreen.Dispose();

            
//返回捕获位图
            return bitmap;
        }


        
public void save(Image image)//保存文件程序
        {
            
            
bool isSave = true;
            SaveFileDialog saveImageDialog 
= new SaveFileDialog();
            saveImageDialog.Title 
= "Capture screen image save dialog";
            saveImageDialog.Filter 
= @"jpeg|*.jpg|bmp|*.bmp|gif|*.gif";

            
if (saveImageDialog.ShowDialog() == DialogResult.OK)
            
{
                
string fileName = saveImageDialog.FileName.ToString();

                
if (fileName != "" && fileName != null)
                
{
                    
string fileExtName = fileName.Substring(fileName.LastIndexOf("."+ 1).ToString();

                    System.Drawing.Imaging.ImageFormat imgformat 
= null;

                    
if (fileExtName != "")
                    
{
                        
switch (fileExtName)
                        
{
                            
case "jpg":
                                imgformat 
= System.Drawing.Imaging.ImageFormat.Jpeg;
                                
break;
                            
case "bmp":
                                imgformat 
= System.Drawing.Imaging.ImageFormat.Bmp;
                                
break;
                            
case "gif":
                                imgformat 
= System.Drawing.Imaging.ImageFormat.Gif;
                                
break;
                            
default:
                                MessageBox.Show(
"只能存取为: jpg,bmp,gif 格式");
                                isSave 
= false;
                                
break;
                        }


                    }


                    
//默认保存为JPG格式
                    if (imgformat == null)
                    
{
                        imgformat 
= System.Drawing.Imaging.ImageFormat.Jpeg;
                    }


                    
if (isSave)
                    
{
                        
try
                        
{
                            image.Save(fileName, imgformat);
                            MessageBox.Show(
"图片已经成功保存!~~");
                        }

                        
catch
                        
{
                            MessageBox.Show(
"保存失败,你还没有截取过图片或已经清空图片!");
                        }

                    }


                }


            }

//            return image;
        }

相关文章推荐

Visual studio 2008环境配置:C#显示代码行号、全屏显示

一、问题描述 Visual studio2008显示代码行号,以便于在编译时能快速找到出错问题。 二、解决步骤 Visual studio 菜单中的”工具“,选择”选项“,在弹出的对话框中选择”文...

c# 系列窗体全屏代码

  • 2010-09-28 16:27
  • 32KB
  • 下载

c#全屏代码

  • 2012-03-31 16:53
  • 113B
  • 下载

C# 实现Winform全屏后不遮挡任务栏,显示任务栏

最近在忙中抽闲,看我的桌面太过死了,不生动,不可爱=。=。。 然后默默的想写一个动态桌面的一个小东西活泼一下。。。 随后拿起来了N久不碰的C#(本人C#渣,不,应该说什么都渣。。。) 结果在wi...

C# 截取计算机全屏代码

  • 2013-05-30 13:30
  • 45KB
  • 下载

c#特殊拷贝SQL原代码

  • 2008-12-16 23:58
  • 1.92MB
  • 下载

c#—WinForm/WPF全屏 隐藏标题栏和任务栏

/// /// 全屏按钮 /// /// /// private void button1_Click(obje...

C# 让控件全屏显示(WinForm)

有时候需要让窗口中某一块的内容全屏显示,比如视频播放、地图等等。。 经过摸索,暂时发现两种可行方法,如果有谁知道其他方法,敬请告知。 1.使用winapi “SetParent” 接口: ...

C# 双击全窗口/全屏显示和恢复

想全屏的控件-事件里用MouseDoubleClick 遮盖在想全屏的控件上的属性Enabled设置为false,避免捕捉不到双击 C#代码: using System; using System....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)