| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7118 人关注过本帖, 1 人收藏
标题:教你使用C# 截取屏幕图像,都来做自己的屏幕录像专家
只看楼主 加入收藏
dreamsfly
Rank: 2
等 级:论坛游民
帖 子:152
专家分:13
注 册:2007-6-29
收藏(1)
 问题点数:0 回复次数:17 
教你使用C# 截取屏幕图像,都来做自己的屏幕录像专家
//获取屏幕1024*768图像
        [System.Runtime.InteropServices.DllImport("gdi32.dll")]
        public static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, UInt32 dwRop);
      //创建桌面句柄
        [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
        public static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, int lpInitData);

        [System.Runtime.InteropServices.DllImport("gdi32.dll")]
        public static extern IntPtr CreateCompatibleDC(IntPtr hdc);

        //转换为本地的图像资源
        [System.Runtime.InteropServices.DllImport("gdi32.dll")]
        public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);

        [System.Runtime.InteropServices.DllImport("gdi32.dll")]
        public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);

        [System.Runtime.InteropServices.DllImport("gdi32.dll")]
        public static extern int DeleteDC(IntPtr hdc);

        //释放用过的设备句柄
        [DllImport("user32.dll")]
        public static extern bool ReleaseDC(
         IntPtr hwnd, IntPtr hdc
         );

        //释放用过的画笔等资源
        [DllImport("gdi32.dll")]
        public static extern bool DeleteObject(
          IntPtr hdc
         );
        


/// <summary>
        /// 截取屏幕图像
        /// </summary>
        /// <param name="Width">宽</param>
        /// <param name="Height">高</param>

        /// <param name="x">x坐标(全屏时候为0)</param>
        /// <param name="y">y坐标(全屏时候为0)</param>

        /// <returns></returns>
        public Bitmap fullphoto(int Width,int Height,int x,int y)
        {
            Bitmap bitmap;
            //try
            //{
                IntPtr hScreenDc = CreateDC("DISPLAY", null, null, 0); // 创建桌面句柄
                IntPtr hMemDc = CreateCompatibleDC(hScreenDc); // 创建与桌面句柄相关连的内存DC
                IntPtr hBitmap = CreateCompatibleBitmap(hScreenDc, Width, Height);   
                IntPtr hOldBitmap = SelectObject(hMemDc, hBitmap);
                BitBlt(hMemDc, x, y, Width, Height, hScreenDc, x, y, (UInt32)0xcc0020);
                IntPtr map = SelectObject(hMemDc, hOldBitmap);
                bitmap = Bitmap.FromHbitmap(map);  
                ReleaseDC(hBitmap, hScreenDc);
                DeleteDC(hScreenDc);//删除用过的对象
                DeleteDC(hMemDc);//删除用过的对象
                DeleteDC(hOldBitmap);
                DeleteObject(hBitmap);
               
              
            //}
            //catch (Exception wx)
            //{
            //    return null;
                //}
                // number= number +1;
                // bitmap.Save("screen" + number + ".bmp");
            
            return bitmap;
        }


屏幕截图大概就是这样的,

bitmap.Save保存一下,看看是不是屏幕的图像,呵呵.
[url=http://www.]www.[/url]来支持一下我的小站
转载请注明,来源[url=http://www.]www.[/url]


搜索更多相关主题的帖子: int 录像 屏幕 图像 专家 
2007-12-05 09:06
gaomenggaici
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2007-2-1
收藏
得分:0 
ok
哪如何把这些图片组合生成动画世界或视频文件
2007-12-06 20:26
dreamsfly
Rank: 2
等 级:论坛游民
帖 子:152
专家分:13
注 册:2007-6-29
收藏
得分:0 
呵呵,那你要先研究了

www. 我的原创下载
2007-12-09 12:39
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 
楼主是想每秒截取屏幕30副图片,然后组成一个视频文件???

我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-12-09 13:11
dreamsfly
Rank: 2
等 级:论坛游民
帖 子:152
专家分:13
注 册:2007-6-29
收藏
得分:0 
秒截取屏幕图片,可以自己社定,组成一个视频文件,我还没有研究,估计需要GDI的API

www. 我的原创下载
2007-12-10 08:56
shiweifu
Rank: 1
等 级:新手上路
帖 子:193
专家分:3
注 册:2006-12-2
收藏
得分:0 
感觉这样的话,效率不是 很好吧。。
2007-12-10 12:39
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
需要用到DX吧,或VFW。。这样搞成的AVI容量太大,受不了的.要是能录SWF那是理想选择.

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-12-10 12:46
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
这样录下来你保存为AVI后,一分钟就有1G多。

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-12-10 12:46
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
标准BMP.一张1024*768=2.25M*(1秒=30)
2.25*30*60=?4050!

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-12-10 12:48
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
收藏
得分:0 
jacklee算得仔细

愛生活 && 愛編程
2007-12-10 14:36
快速回复:教你使用C# 截取屏幕图像,都来做自己的屏幕录像专家
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042132 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved