返回列表 发帖

关于“屏幕抓图”

LBSALE[1]LBSALE用程序实现屏幕抓图,我经常用下面的子程序实现: #include void SaveBmp(char *m_Path) { int nCount=0; CDC dc; dc.CreateDC("DISPLAY",NULL,NULL,NULL); CBitmap bm; int Width=GetSystemMetrics(SM_CXSCREEN); int Height=GetSystemMetrics(SM_CYSCREEN); bm.CreateCompatibleBitmap(&dc,Width,Height); CDC tdc; tdc.CreateCompatibleDC(&dc); CBitmap*pOld=tdc.SelectObject(&bm); tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY); tdc.SelectObject(pOld); BITMAP btm; bm.GetBitmap(&btm); DWORD size=btm.bmWidthBytes*btm.bmHeight; LPSTR lpData=(LPSTR)GlobalAllocPtr(GPTR,size); BITMAPINFOHEADER bih; bih.biBitCount=btm.bmBitsPixel; bih.biClrImportant=0; bih.biClrUsed=0; bih.biCompression=0; bih.biHeight=btm.bmHeight; bih.biPlanes=1; bih.biSize=sizeof(BITMAPINFOHEADER); bih.biSizeImage=size; bih.biWidth=btm.bmWidth; bih.biXPelsPerMeter=0; bih.biYPelsPerMeter=0; GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS); //bm.GetBitmapBits(size,lpData);此函数在处理5-5-5模式的16位色下会出现颜色混乱 static int filecount=0; CString name; name.Format("mwy%08d.bmp",filecount++); name=m_Path+name; BITMAPFILEHEADER bfh; bfh.bfReserved1=bfh.bfReserved2=0; bfh.bfType=((WORD)(';M';<< 8)|';B';); bfh.bfSize=54+size; bfh.bfOffBits=54; CFile bf; if(bf.Open(name,C文件::modeCreate|C文件::modeWrite)){ bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER)); bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER)); bf.WriteHuge(lpData,size); bf.Close(); } GlobalFreePtr(lpData); } 调用时,传递一个路径参数即可。例如: SaveBmp("c:\\");

关于“屏幕抓图”

为统计究竟有多少人看上贴,故设置看贴条件为“1”,发一个贴子就可以挣好多,相信没有支付不起的人。
接着讨论:其实还有一种方法是比上述方法更简单的,只用一句,既可以抓图又可以立即把图像保存到剪切板中:
keybd_event(0x2C,0,0,0);
这一句相当于按下了键盘上的Print Screen键,所以它的兼容性最好。
如果不相信,打开画图板,粘贴一下。或者,打开写字板,粘贴一下。效果立即出来。
可是,有一个问题一直无法解决,就是如何再写一个子函数,一调用就可以把剪切板中的数据取出来保存为BMP或JPG图像呢?欢迎大家讨论!

TOP

关于“屏幕抓图”

这就要对图形编码格式有所了解拉...

TOP

关于“屏幕抓图”

把一个位图写入剪切板,我会,但反过来,取下来,我不会。

TOP

关于“屏幕抓图”

哈哈1又搜刮到点东西1不错

TOP

关于“屏幕抓图”

这个我没有试过,但是我会去试的啊,谢谢你提供了这个.

TOP

关于“屏幕抓图”

看不懂第一个帖子,但第二个是会用了。呵呵

TOP

关于“屏幕抓图”

下面引用由懒惰王子2006/04/26 05:45pm 发表的内容:
哈哈1又搜刮到点东西1不错
     “搜刮”,好形象的字眼。别忘了贡献啊?论坛需要大家的支持。我以前支持过了,现在我也开始成为“搜刮”派。我水平有限,智商低下,还请楼主把以前“搜刮”到的其它经典,分享于我,使我从愚蠢变为明理,好与你一同并肩做战。
     楼上的朋友,看不懂没关系。偶不明白地球为啥会自转,但偶仍然把这个定理牢记于心。就像偶不是版主一样,仍然会每天抽出半个小时来此坛转转。

TOP

关于“屏幕抓图”

可以了啊,我能够做了啊,谢谢

TOP

关于“屏幕抓图”

我不会汇编语言!!也不会C语言~~
我请问下!!如果我想学语言是不是要从
汇编开始呀!!!

TOP

关于“屏幕抓图”

汇编是开发底层的
从C开始吧,C比汇编简单点

TOP

关于“屏幕抓图”

啥呀,一句没看懂..看来还需要再学习..

TOP

关于“屏幕抓图”

看不懂!!晕!!
钱还退不??我给你一个帐号.呵呵

TOP

关于“屏幕抓图”

下面引用由aj8002006/05/11 10:42pm 发表的内容: 看不懂!!晕!!
钱还退不??我给你一个帐号.呵呵
这个贴子我个人认为比较不错。 如果因此让你蒙受巨大损失,小弟愿意以10倍价格赔偿,以免大家伤了和气。

TOP

关于“屏幕抓图”

呵呵  经典小程序  收藏了哦

TOP

返回列表 回复 发帖