当前位置:编程学习 > C#/ASP.NET >>

求高手。指教一下怎样模拟QQ那样的截图功能

我就在上面一个btn;
之后点击一下就能截图。。
求高手。。求。。。
小弟我是初学者。真是一点思路也没有。。。
跪求各位大哥。大姐。大叔,帮帮忙!! --------------------编程问答-------------------- http://www.cnblogs.com/kevin-wu/archive/2006/12/24/601989.html
http://www.cnblogs.com/NeeoMeng/articles/1119215.html --------------------编程问答-------------------- 我现在蒙圈了。。求大哥大姐给个代码啥的。。就是一个btn。点完了就截图。 --------------------编程问答-------------------- 这个办法不成啊。截图不能实现啊。
我在main窗体代码这样的
 private void btnCutter_Click_1(object sender, EventArgs e)
        {
            Image img = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);
            Graphics g = Graphics.FromImage(img);
            g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size);
            IntPtr dc = g.GetHdc();
            g.ReleaseHdc(dc);
            ScreenBody body = new ScreenBody();
            body.BackgroundImage = img;
            //body.Parent = this;
            body.Show();
        }

接卡死了。。 --------------------编程问答-------------------- http://www.cnblogs.com/neeomeng/articles/1119215.html

LZ 看看 --------------------编程问答-------------------- 帮顶
--------------------编程问答-------------------- --------------------编程问答-------------------- 参考
--reply by CSDN Study Trial V1.0.1 (starts_2000) --------------------编程问答--------------------
using   System;   
using   System.Drawing;   
using   System.Collections;   
using   System.ComponentModel;   
using   System.Windows.Forms;   
using   System.Data;   
using   System.Drawing.Imaging;   
    
namespace   WindowsApplication1   
...{   
    /**////   <summary>   
    ///   Form1   的摘要说明。   
    ///   </summary>   
    public   class   Form1   :   System.Windows.Forms.Form   
    ...{   
        private   System.Windows.Forms.Button   button1;   
        /**////   <summary>   
        ///   必需的设计器变量。   
        ///   </summary>   
        private   System.ComponentModel.Container   components   =   null;   
    
        public   Form1()   
        ...{   
            //   
            //   Windows   窗体设计器支持所必需的   
            //   
            InitializeComponent();   
    
            //   
            //   TODO:   在   InitializeComponent   调用后添加任何构造函数代码   
            //   
        }   
    
        /**////   <summary>   
        ///   清理所有正在使用的资源。   
        ///   </summary>   
        protected   override   void   Dispose(   bool   disposing   )   
        ...{   
            if(   disposing   )   
            ...{   
                if   (components   !=   null)     
                ...{   
                    components.Dispose();   
                }   
            }   
            base.Dispose(   disposing   );   
        }   
    
        Windows   Form   Designer   generated   code#region   Windows   Form   Designer   generated   code   
        /**////   <summary>   
        ///   设计器支持所需的方法   -   不要使用代码编辑器修改   
        ///   此方法的内容。   
        ///   </summary>   
        private   void   InitializeComponent()   
        ...{   
            this.button1   =   new   System.Windows.Forms.Button();   
            this.SuspendLayout();   
            //     
            //   button1   
            //     
            this.button1.Location   =   new   System.Drawing.Point(48,   48);   
            this.button1.Name   =   "button1";   
            this.button1.Size   =   new   System.Drawing.Size(112,   40);   
            this.button1.TabIndex   =   0;   
            this.button1.Text   =   "开始";   
            this.button1.Click   +=   new   System.EventHandler(this.button1_Click);   
            //     
            //   Form1   
            //     
            this.AutoScaleBaseSize   =   new   System.Drawing.Size(6,   14);   
            this.ClientSize   =   new   System.Drawing.Size(232,   149);   
            this.Controls.AddRange(new   System.Windows.Forms.Control[]   ...{   
                                                                              this.button1});   
            this.Name   =   "Form1";   
            this.Text   =   "Form1";   
            this.ResumeLayout(false);   
    
        }   
        #endregion   
    
        /**////   <summary>   
        ///   应用程序的主入口点。   
        ///   </summary>   
        [STAThread]   
        static   void   Main()     
        ...{   
            Application.Run(new   Form1());   
        }   
    
        [   System.Runtime.InteropServices.DllImportAttribute   (   "gdi32.dll"   )   ]   
        private   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   //   光栅的操作值   
            )   ;   
    
        [   System.Runtime.InteropServices.DllImportAttribute   (   "gdi32.dll"   )   ]   
        private   static   extern   IntPtr   CreateDC   (   
            string   lpszDriver   ,   //   驱动名称   
            string   lpszDevice   ,   //   设备名称   
            string   lpszOutput   ,   //   无用,可以设定位"NULL"   
            IntPtr   lpInitData   //   任意的打印机数据   
            )   ;   
    
        private   void   button1_Click(object   sender,   System.EventArgs   e)   
        ...{   
            this.Hide();   
            IntPtr   dc1   =   CreateDC   (   "DISPLAY"   ,   null   ,   null   ,   (   IntPtr   )   null   )   ;   
            //创建显示器的DC   
            Graphics   g1   =   Graphics.FromHdc   (   dc1   )   ;   
            //由一个指定设备的句柄创建一个新的Graphics对象   
            Bitmap   MyImage   =   new   Bitmap   (   Screen.PrimaryScreen.Bounds.Width   ,   Screen.PrimaryScreen.Bounds.Height-25   ,   g1   )   ;   
            //根据屏幕大小创建一个与之相同大小的Bitmap对象   
            Graphics   g2   =   Graphics.FromImage   (   MyImage   )   ;   
            //获得屏幕的句柄   
            IntPtr   dc3   =   g1.GetHdc   (   )   ;   
            //获得位图的句柄   
            IntPtr   dc2   =   g2.GetHdc   (   )   ;   
            //把当前屏幕捕获到位图对象中   
            BitBlt   (   dc2   ,   0   ,   0   ,   Screen.PrimaryScreen.Bounds.Width   ,   Screen.PrimaryScreen.Bounds.Height-25   ,   dc3   ,   0   ,   0   ,   13369376   )   ;   
            //把当前屏幕拷贝到位图中   
            g1.ReleaseHdc   (   dc3   )   ;   
            //释放屏幕句柄   
            g2.ReleaseHdc   (   dc2   )   ;   
            //释放位图句柄   
            MyImage.Save   (   "c:\MyJpeg.jpg"   ,   ImageFormat.Jpeg   )   ;   
            MessageBox.Show   (   "已经把当前屏幕保存到C:\MyJpeg.jpg文件中!"   )   ;   
            this.Show();   
        }   
    }   
}
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,