首页新闻找找看学习计划

求 windows 截图代码,截图必须清楚。

0
悬赏园豆:40 [已关闭问题] 关闭于 2013-07-28 13:06

本人在做C#,遇到截图问题,找到一些代码,但截图都不清晰,起码要和PrintScreen那个按钮的清晰一样啊!

语言限高级语言 C++,Delphi,VB等都可以,但不要引用一大堆类库,我最终要自己翻译成C#,求核心代码片断。

我这里用过BitBlt和PrintWindow,但截图都不清晰,希望有人给一个清楚的截图代码,针对hwnd截图的。

沧海一杰的主页 沧海一杰 | 初学一级 | 园豆:48
提问于:2013-07-19 14:29
< >
分享
所有回答(3)
0

使用微软提供的CImage类,

#include <atlimage.h>

CImage image;
image.Create(nWidth, nHeight, nBitPerPixel);
BitBlt(image.GetDC(), 0, 0, nWidth, nHeight, hdcSrc, 0, 0, SRCCOPY);
ReleaseDC(NULL, hdcSrc);
image.ReleaseDC();
image.Save(CsAllImagePath.GetBuffer(), Gdiplus::ImageFormatPNG);//ImageFormatJPEG

zbyhi | 园豆:4 (初学一级) | 2013-07-19 17:03
0
dudu | 园豆:39077 (高人七级) | 2013-07-19 17:27
0
 public static string getScreen()
        {
            string Opath = @"C:\LogMessage\Pic";
            string photoname = DateTime.Now.ToString("yyyyMMddHHmmss");
            string path1 = Opath + DateTime.Now.ToShortDateString();
            string file = Opath + "//" + photoname + ".jpg";
            Image _img = null;
            Bitmap myImage = null;
            if (!Directory.Exists(Opath))
                Directory.CreateDirectory(Opath);
            try
            {

                Screen scr = Screen.PrimaryScreen;
                Rectangle rc = scr.Bounds;

                int iWidth = rc.Width;
                int iHeight = rc.Height;
                myImage = new Bitmap(iWidth, iHeight);

                Graphics gl = Graphics.FromImage(myImage);
                gl.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
                _img = myImage;

                _img.Save(file, System.Drawing.Imaging.ImageFormat.Jpeg);
                //}
            }
            catch
            {
            }
            return file;
        }

我正在做的一个项目里面的代码,截屏是没问题的,不过是截整个屏幕

乘热喝茶 | 园豆:234 (菜鸟二级) | 2013-07-21 20:19

试了,同样不清楚,比如VS里的代码看起来会有一点背景,很难看。而PrtSrc键出来的就很清楚。而且这段代码没法截超过屏幕大小的图,我的截图有超过5000*5000的,现在用PrintWindow可以截到,就是不清楚,只是不知道这个截图的参数能不能调

支持(0) 反对(0) 沧海一杰 | 园豆:48 (初学一级) | 2013-07-23 12:18

@沧海一杰: gl.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));

这条语句就是截图的参数 ,可以调的   

支持(0) 反对(0) 乘热喝茶 | 园豆:234 (菜鸟二级) | 2013-07-23 15:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册