有人做过滚屏截图吗,该怎么处理
有人做过滚屏截图吗
我想问下是怎么做到的?就是原理性的东西
------解决方案--------------------
在Windows操作系统下,做过滚屏和截图,我是这样弄的:
滚屏: 通过Bitblt等Windows的绘图API函数,不断修改绘制坐标来实现。
截图:先通过API获取屏幕HDC,将屏幕HDC内容先写到内存,然后按照BMP等文件格式,
将BMP头,图像数据等等全部写入文件。
------解决方案--------------------
什么是滚屏截图?翻页?每翻一页截图一次?
截图的程序我有
我想问下是怎么做到的?就是原理性的东西
------解决方案--------------------
在Windows操作系统下,做过滚屏和截图,我是这样弄的:
滚屏: 通过Bitblt等Windows的绘图API函数,不断修改绘制坐标来实现。
截图:先通过API获取屏幕HDC,将屏幕HDC内容先写到内存,然后按照BMP等文件格式,
将BMP头,图像数据等等全部写入文件。
------解决方案--------------------
什么是滚屏截图?翻页?每翻一页截图一次?
截图的程序我有
int SaveBitmapToFile(HBITMAP hBitmap,LPSTR lpFileName)
{
HDC hDC; //É豸ÃèÊö±í
int iBits;//µ±Ç°ÏÔʾ·Ö±æÂÊÏÂÿ¸öÏñËØËùÕ¼×Ö½ÚÊý
WORD wBitCount;//λͼÖÐÿ¸öÏñËØËùÕ¼×Ö½ÚÊý
DWORD dwPaletteSize=0;//¶¨Òåµ÷É«°å´óС
DWORD dwBmBitsSize;//λͼÖÐÏñËØ×Ö½Ú´óС
DWORD dwDIBSize;// λͼÎļþ´óС
DWORD dwWritten;//дÈëÎļþ×Ö½ÚÊý
BITMAP Bitmap;//λͼ½á¹¹
BITMAPFILEHEADER bmfHdr; //λͼÊôÐԽṹ
BITMAPINFOHEADER bi; //λͼÎļþÍ·½á¹¹
LPBITMAPINFOHEADER lpbi; //λͼÐÅϢͷ½á¹¹ Ö¸ÏòλͼÐÅϢͷ½á¹¹
HANDLE fh;//¶¨ÒåÎļþ¾ä±ú
HANDLE hDib;//·ÖÅäÄÚ´æ¾ä±ú
HANDLE hPal;//·ÖÅäÄÚ´æ¾ä±ú
HANDLE hOldPal=NULL;//µ÷É«°å¾ä±ú
//¼ÆËãλͼÎļþÿ¸öÏñËØËùÕ¼×Ö½ÚÊý
hDC = CreateDC("DISPLAY",NULL,NULL,NULL);
iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);
DeleteDC(hDC);
if (iBits <= 1)
wBitCount = 1;
else if (iBits <= 4)
wBitCount = 4;
else if (iBits <= 8)
wBitCount = 8;
else if (iBits <= 24)
wBitCount = 24;
else if (iBits<=32)
wBitCount = 24;
//¼ÆËãµ÷É«°å´óС