抓图软件课程设计(编辑修改稿)内容摘要:

后 建立一个屏幕设备环境句柄 和 与屏幕设备环境句柄兼容、与鼠标所在处的窗口的区域等大的位图 , 把新位图选到内存设备描述表中 ,最后 把屏幕设备描述表拷贝到内存设备描述表中 , 终止鼠标捕获 , 恢复窗口显示模式。 void CCaptureDlg::OnLButtonUp(UINT nFlags, CPoint point) {//得到鼠标所在处的窗口的区域宽、高 int nWidth=()。 int nHeight=()。 HDC hdcScreen, hMemDC。 HBITMAP hOldBitmap。 //建立一个屏幕设备环境句柄 hdcScreen = CreateDC(DISPLAY, NULL, NULL, NULL)。 hMemDC = CreateCompatibleDC(hdcScreen)。 //建立一个与屏幕设备环境句柄兼容、与鼠标所在处的窗口的区域等大的位图 hBitmap = CreateCompatibleBitmap(hdcScreen, nWidth, nHeight)。 // 把新位图选到内存设备描述表中 hOldBitmap =(HBITMAP)SelectObject(hMemDC, hBitmap)。 // 把屏幕设备描述表拷贝到内存设备描述表中 BitBlt(hMemDC,0,0,nWidth,nHeight,hdcScreen,SRCCOPY)。 //取回鼠标所在处的窗口屏幕位图的句柄 hBitmap =(HBITMAP)SelectObject(hMemDC, hOldBitmap)。 DeleteDC(hdcScreen)。 DeleteDC(hMemDC)。 MessageBox(屏幕内容已经剪切获得,请单击对话框菜单按纽保存为 BMP 文件。 )。 //终止鼠标捕获 ReleaseCapture()。 //恢复窗口显示模式 ShowWindow(SW_NORMAL)。 CDialog::OnLButtonUp(nFlags, point)。 } 3. 3 将抓取的窗口图片保存为位图文件存取 设计保存函数 SaveBitmapToFile(HBITMAP hBitmap, LPCTSTR lpFileName),并且在前面对话框类里面进行函数声明。 此函数是整个软件设计当中的技术难点,要特别 对 BMP 位图文件非常熟悉, BMP 文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 BMP 文件头数据结构含有 BMP文件的类型、文件大小和位图起始位置等信息。 位图文件的类型,必须为 BM位图文件的大小,以字节为单位 , 位图文件保留字,必须为 0位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为单位。 BMP 位图信息头数据用于说明位图的尺寸等信息。 在 typedef struct tagBITMAPINFOHEADER 结构当中 DWORD biSize 表示 本结构所占用字节数 ; LONGbiWidth 表示 位图的宽度 ; 以像素为单位 LONGbiHeight 表示 位图的高度,以像素为单位 WORD biPlanes 表示 目标设备的级别,必须为 1; WORD biBitCount 表示 每个像素所需的位数,必须是 1(双色 ),4(16 色 ), 8(256 色 )或 24(真彩色 )之一 ; DWORD biCompression。 表示 位图压缩类型,必须是 0(不压缩 ), 1(BI_RLE8压缩类型 )或 2(BI_RLE4压缩类型 )之一 , DWORD biSizeImage 表示 位图的大小,以字节为单位 ; LONGbiXPelsPerMeter表示 位图水平分辨率,每米像素数 ; LONGbiYPelsPerMeter 表示 位图垂直分辨率,每米像素数 ; DWORD biClrUsed 表示 位图实际使用的颜色表中的颜色数 ; DWORD biClrImportant 表示位图显示过程中重要的颜色数。 颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个 RGBQUAD 类型的结构,定义一种颜色。 RGBQUAD 结构的定义如下 : 在 typedef struct tagRGBQUAD 中 BYTErgbBlue 表示 蓝色的亮度 (值范围为 0255); BYTErgbGreen 表示 绿色的亮度 (值范围为 0255); BYTErgbRed 表示 红色的亮度 (值范围为 0255); BYTErgbReserved表示 保留,必须为 0。 颜色表中 RGBQUAD 结构数据的个数有 biBitCount 来确定 :当biBitCount=1,4,8 时,分别有。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。