首页
社区
课程
招聘
[求助]请问如何屏幕截图至内存
发表于: 2007-5-5 22:45 8555

[求助]请问如何屏幕截图至内存

2007-5-5 22:45
8555
有内存hdc吗?

由于是与嵌入式系统连接,截图后通过usb口实时发送。若存至盘文件则操作太频繁,怕对硬盘有损

伤。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 50
活跃值: (483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可以使用剪辑板呀.
2007-5-6 11:03
0
雪    币: 413
活跃值: (351)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
截图后还要对颜色位数进行处理。 在剪切板中又如何处理这些数据
2007-5-6 12:25
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
4

至于用于什么方式传输是另外的事情
2007-5-6 13:28
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
NaX
5
我曾经使用的一段代码 把屏幕图像放到内存
///////////////////////////////////////////////////////////
//函数:InitScreenDib
//功能:初始化屏幕颜色数据
//输入参数:hDC为主程序窗体的DC
//返回值:TRUE - 成功; FALSE - 失败
DIBCOLORAPI BOOL InitScreenDib(HDC hDC)
{
        PBITMAPINFO pbmp;

    if(hDC == NULL)    //DC句柄为空   
                return FALSE;
        if(lpBits!=NULL)   //如果颜色数据空间还没有释放就先释放
                FreeScreenDib();
       
        hGobalBitmap = CopyScreen();//截取整个屏幕图像
        if(hGobalBitmap == NULL)
                return FALSE;

        if(!CreateBitmapInfoStruct(hGobalBitmap,pbmp)){//初始化位图信息       
                MessageBox(NULL,"Failed to CreateBitmapInfoStruct()",NULL,MB_OK);
                DeleteObject(hGobalBitmap);
                return FALSE;
        }
       

        pBmpInfoh = (PBITMAPINFOHEADER) pbmp;

        lpBits = (LPBYTE) GlobalAlloc(GMEM_FIXED, pBmpInfoh->biSizeImage);//分配保存颜色数据的内存
    if(lpBits == NULL) {
                MessageBox(NULL,"Failed to GlobalAlloc()",NULL,MB_OK);
                DeleteObject(hGobalBitmap);
                return FALSE;
        }
   
        //将位图的颜色信息保存到分配的内存空间中,这时候颜色的格式是0RGB       
/*        if (!GetDIBits(hDC, hGobalBitmap, 0, (WORD) pBmpInfoh->biHeight, lpBits, pbmp, DIB_RGB_COLORS)){
                MessageBox(NULL,"Failed to GetDIBits",NULL,MB_OK);
                return FALSE;
        }*/

        //将位图的颜色信息保存到分配的内存空间中,这时候颜色的格式是0RGB
        if(GetBitmapBits(hGobalBitmap,pBmpInfoh->biSizeImage,lpBits)==0){
                MessageBox(NULL,"Failed to GetDIBits",NULL,MB_OK);
                DeleteObject(hGobalBitmap);
                return FALSE;
        }
        DeleteObject(hGobalBitmap);

        return TRUE;
}
////////////////////////////////////////////////////////////
2007-5-7 09:35
0
雪    币: 413
活跃值: (351)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢 valx

原来有 GetBitmapBits 这个函数,这正是我需要的! 谢谢!
2007-5-7 15:39
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
7
截图至内存,那么如何把内存中关于图片的数据经过处理,显示出图片拉?
2007-5-7 15:57
0
雪    币: 413
活跃值: (351)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不显示,我通过发usb口发送至下位机。
2007-5-7 21:57
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
9
你能给个显示出图片的代码吗?
2007-5-7 22:20
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
NaX
10
显示图像就不用转换,直接用HDC就能显示在窗体上,具体可以查查 BitBlt,StretchBlt这两个函数的用法,一般都是通过这两个函数实现的
2007-5-8 08:49
0
游客
登录 | 注册 方可回帖
返回
//