青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

socketref,再見!高德

https://github.com/adoggie

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用鏈接

留言簿(54)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 1 
 2 #ifndef _BITMAP_H
 3 #define _BITMAP_H
 4 
 5 #include <windows.h>
 6 
 7 void SaveImage(const char * bmp_file,void *rgb_data,int rgb_len,BITMAPINFOHEADER * bi);
 8 void FillBitmapInfoHdr(BITMAPINFOHEADER * bi,int width,int height,int deep);
 9 bool GetImageData( HWND target,RECT rect,void ** data,int * len);
10 bool GetImageData2( HWND target,RECT rect,void * data,int * len);
11 void CaptureImage(HWND target,const char * destfile);
12 void DrawBitmap(HWND hwnd,int width,int height,char *data,int deep);            
13 void DrawBitmap2(HWND hwnd,RECT rect,char *data,int deep);
14 void StretchDrawBitmap(HWND hwnd,int width,int height,char *data,int deep);
15 #endif
16 
  1 #include <windows.h>
  2 #include <stdio.h>
  3 
  4 void SaveImage(const char * bmp_file,void *rgb_data,int rgb_len,BITMAPINFOHEADER * bi){
  5     BITMAPFILEHEADER hdr;
  6     FILE *fsave;
  7     memset(&hdr,0,sizeof(hdr));
  8     hdr.bfType = ((WORD) ('M' << 8| 'B');
  9     hdr.bfSize = sizeof(hdr)+sizeof(BITMAPINFOHEADER)+rgb_len;
 10     hdr.bfOffBits = (DWORD) (sizeof(hdr) + sizeof(BITMAPINFOHEADER) );
 11     //--
 12     fsave = fopen(bmp_file,"wb");
 13     fwrite( &hdr,sizeof(hdr),1,fsave);
 14     fwrite(bi,sizeof(BITMAPINFOHEADER),1,fsave);
 15     fwrite(rgb_data,rgb_len,1,fsave);
 16     fflush(fsave);
 17     fclose(fsave);
 18 }
 19 
 20 
 21 void FillBitmapInfoHdr(BITMAPINFOHEADER * bi,int width,int height,int deep){
 22     memset(bi,0,sizeof(BITMAPINFOHEADER));
 23     bi->biSize        = sizeof(BITMAPINFOHEADER);
 24     bi->biWidth        = width;
 25     bi->biHeight         = height;
 26     bi->biPlanes         = 1;
 27     bi->biBitCount        = deep;            //bm.bmPlanes * bm.bmBitsPixel;
 28     bi->biCompression    = BI_RGB;
 29     bi->biSizeImage        = 0;
 30     bi->biXPelsPerMeter    = 0;
 31     bi->biYPelsPerMeter    = 0;
 32     bi->biClrUsed        = 0;
 33     bi->biClrImportant    = 0;
 34 }
 35 
 36 bool GetImageData2( HWND target,RECT rect,void * data,int * len){
 37      HDC entireDC;
 38     RECT rc;
 39     HBITMAP bitmap;
 40     HDC CompDC;    
 41     entireDC = GetDC(target);
 42     //GetWindowRect(target,&rc);
 43     rc = rect;   
 44     
 45     if( rc.right-rc.left<=0 || rc.bottom-rc.top <=0){
 46         return false;
 47     }
 48     bitmap = CreateCompatibleBitmap( entireDC,rc.right-rc.left,rc.bottom-rc.top);
 49     if(bitmap ==NULL){
 50         ReleaseDC(target,entireDC);
 51         return false;
 52     }
 53     CompDC = CreateCompatibleDC(entireDC);
 54     SelectObject(CompDC,bitmap);    
 55     BitBlt(CompDC,0,0,rc.right-rc.left,rc.bottom-rc.top,entireDC,rect.left,rect.top,SRCCOPY);
 56 
 57     BITMAPINFO bmi;
 58       BITMAPINFOHEADER   *bi;
 59       int rgb_len ;
 60     int lines;
 61     bi = &bmi.bmiHeader;
 62       char *rgb_buff ;
 63     FillBitmapInfoHdr(bi,rc.right-rc.left,rc.bottom-rc.top,24);
 64 
 65     rgb_len = bi->biWidth * bi->biHeight * 3;
 66     
 67     rgb_buff =(char*) data;// new char[rgb_len];
 68     if( rgb_buff == NULL ){
 69         return false;
 70     }
 71     lines = GetDIBits( CompDC,bitmap,0,rc.bottom-rc.top,rgb_buff,
 72                         (LPBITMAPINFO)bi,DIB_RGB_COLORS);
 73     DeleteObject(bitmap);
 74     ReleaseDC(target,CompDC);
 75     ReleaseDC(target,entireDC);
 76     DeleteDC(CompDC);
 77     if( lines == NULL){
 78       //  delete[] rgb_buff;
 79         return false;
 80     }
 81    // *data = rgb_buff;
 82     *len = rgb_len;
 83     return true;
 84 }
 85 
 86 
 87 bool GetImageData( HWND target,RECT rect,void ** data,int * len){
 88      HDC entireDC;
 89     RECT rc;
 90     HBITMAP bitmap;
 91     HDC CompDC;    
 92     entireDC = GetDC(target);
 93     //GetWindowRect(target,&rc);
 94     rc = rect;    
 95     bitmap = CreateCompatibleBitmap( entireDC,rc.right-rc.left,rc.bottom-rc.top);
 96     CompDC = CreateCompatibleDC(entireDC);
 97     SelectObject(CompDC,bitmap);    
 98     BitBlt(CompDC,0,0,rc.right-rc.left,rc.bottom-rc.top,entireDC,0,0,SRCCOPY);
 99 
100     BITMAPINFO bmi;
101       BITMAPINFOHEADER   *bi;
102       int rgb_len ;
103     int lines;
104     bi = &bmi.bmiHeader;
105       char *rgb_buff ;
106     FillBitmapInfoHdr(bi,rc.right-rc.left,rc.bottom-rc.top,24);
107 
108     rgb_len = bi->biWidth * bi->biHeight * 3;
109     rgb_buff = new char[rgb_len];
110     if( rgb_buff == NULL ){
111         return false;
112     }
113     lines = GetDIBits( CompDC,bitmap,0,rc.bottom-rc.top,rgb_buff,
114                         (LPBITMAPINFO)bi,DIB_RGB_COLORS);
115     DeleteObject(bitmap);
116     ReleaseDC(target,CompDC);
117     ReleaseDC(target,entireDC);
118     DeleteDC(CompDC);
119     if( lines == NULL){
120         delete[] rgb_buff;
121         return false;
122     }
123     *data = rgb_buff;
124     *len = rgb_len;
125     return true;
126 }
127 
128 
129 void DrawBitmap(HWND hwnd,int width,int height,char *data,int deep);
130 void CaptureImage(HWND target,const char * destfile){
131     RECT rc;
132     GetWindowRect(target,&rc);
133     void *data;
134     int len;
135     GetImageData(target,rc,&data,&len);
136 
137     BITMAPINFO bmi;
138       BITMAPINFOHEADER   *bi;      
139     bi = &bmi.bmiHeader;
140     FillBitmapInfoHdr(bi,rc.right-rc.left,rc.bottom-rc.top,24);
141 
142     SaveImage(destfile,data,len,bi);
143     
144     delete[] data;
145 }
146 
147 void DrawBitmap2(HWND hwnd,RECT rect,char *data,int deep){
148 
149     BITMAPINFOHEADER   *bi;
150     BITMAPINFO bitmap;
151     bi = &bitmap.bmiHeader;
152     memset(&bitmap,0,sizeof(bitmap));
153     bi->biSize        = sizeof(BITMAPINFOHEADER);
154     bi->biWidth        = rect.right - rect.left;
155     bi->biHeight         = rect.bottom - rect.top;
156     bi->biPlanes         = 1;
157     bi->biBitCount        = deep;            //bm.bmPlanes * bm.bmBitsPixel;
158     bi->biCompression    = BI_RGB;
159     bi->biSizeImage        = bi->biWidth*bi->biHeight*deep/3;
160     bi->biXPelsPerMeter    = 0;
161     bi->biYPelsPerMeter    = 0;
162     bi->biClrUsed        = 0;
163     bi->biClrImportant    = 0;
164 
165     HDC hdc =   GetDC(hwnd);
166 
167     StretchDIBits( hdc,
168         rect.left,
169         rect.top,
170         rect.right-rect.left,
171         rect.bottom - rect.top,
172         //rc.right-1,
173         //rc.bottom-1,
174         0,
175         0,
176         rect.right-rect.left,
177         rect.bottom - rect.top,
178         (CONST VOID *)data,
179         &bitmap,
180         DIB_RGB_COLORS,
181         SRCCOPY );
182 
183     //ReleaseDC(hwnd,hdc);
184     ReleaseDC(hwnd,hdc);
185 }
186 
187 void StretchDrawBitmap(HWND hwnd,int width,int height,char *data,int deep){
188     
189     BITMAPINFOHEADER   *bi;
190     BITMAPINFO bitmap;
191     bi = &bitmap.bmiHeader;
192     memset(&bitmap,0,sizeof(bitmap));
193     bi->biSize        = sizeof(BITMAPINFOHEADER);
194     bi->biWidth        = width;
195     bi->biHeight         = height;
196     bi->biPlanes         = 1;
197     bi->biBitCount        = deep;            //bm.bmPlanes * bm.bmBitsPixel;
198     bi->biCompression    = BI_RGB;
199     bi->biSizeImage        = bi->biWidth*bi->biHeight*deep/3;
200     bi->biXPelsPerMeter    = 0;
201     bi->biYPelsPerMeter    = 0;
202     bi->biClrUsed        = 0;
203     bi->biClrImportant    = 0;
204     RECT rc;
205     HDC hdc =   GetDC(hwnd);
206     ::GetWindowRect(hwnd,&rc);
207     StretchDIBits( hdc,
208         0,
209         0,
210         rc.right - rc.left,
211         rc.bottom - rc.top,
212         0,
213         0,
214         width,
215         height,
216         (CONST VOID *)data,
217         &bitmap,
218         DIB_RGB_COLORS,
219         SRCCOPY );
220     
221     //ReleaseDC(hwnd,hdc);
222     ReleaseDC(hwnd,hdc);
223 }
224 
225 void DrawBitmap(HWND hwnd,int width,int height,char *data,int deep){
226 
227     BITMAPINFOHEADER   *bi;
228     BITMAPINFO bitmap;
229     bi = &bitmap.bmiHeader;
230     memset(&bitmap,0,sizeof(bitmap));
231     bi->biSize        = sizeof(BITMAPINFOHEADER);
232     bi->biWidth        = width;
233     bi->biHeight         = height;
234     bi->biPlanes         = 1;
235     bi->biBitCount        = deep;            //bm.bmPlanes * bm.bmBitsPixel;
236     bi->biCompression    = BI_RGB;
237     bi->biSizeImage        = width*height*deep;
238     bi->biXPelsPerMeter    = 0;
239     bi->biYPelsPerMeter    = 0;
240     bi->biClrUsed        = 0;
241     bi->biClrImportant    = 0;
242 
243     HDC hdc =   GetDC(hwnd);
244 
245     StretchDIBits( hdc,
246         0,
247         0,
248         width-1,
249         height-1,
250         //rc.right-1,
251         //rc.bottom-1,
252         0,
253         0,
254         width,
255         height,
256         (CONST VOID *)data,
257         &bitmap,
258         DIB_RGB_COLORS,
259         SRCCOPY );
260 
261     //ReleaseDC(hwnd,hdc);
262     ReleaseDC(hwnd,hdc);
263 }
posted on 2006-03-02 00:45 放屁阿狗 閱讀(2388) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美影院成年免费版| 亚洲午夜伦理| 在线成人h网| 亚洲精品1区2区| 一区二区三区欧美日韩| 亚洲一区二区三区在线观看视频 | 韩国av一区二区三区四区| 激情综合网激情| 日韩网站在线看片你懂的| 亚洲天堂激情| 你懂的视频欧美| 亚洲三级免费观看| 99精品视频免费| 亚洲日本激情| 欧美日韩一区自拍| 亚洲电影免费观看高清完整版在线| 一本久久综合| 欧美福利视频| 午夜精品www| 欧美精品福利视频| 国产亚洲综合精品| 亚洲视频免费| 午夜免费日韩视频| 国产精品国产福利国产秒拍| 永久域名在线精品| 亚洲日韩第九十九页| 国产精品一卡| 99在线精品视频| 亚洲一区二区不卡免费| 欧美精品电影在线| 久久国产精品72免费观看| 欧美激情1区2区| 午夜亚洲性色福利视频| 亚洲国产精品www| 老司机免费视频一区二区| 中文国产亚洲喷潮| 欧美三级日本三级少妇99| 一二美女精品欧洲| 久久er99精品| 9l国产精品久久久久麻豆| 欧美尤物巨大精品爽| 日韩视频免费观看高清完整版| 欧美成人一区二免费视频软件| 欧美日韩一区二区三区视频 | 亚洲电影av在线| 中文av字幕一区| 亚洲国产成人精品久久久国产成人一区| 日韩一区二区高清| 欧美日本簧片| 亚洲一区二区三区在线视频 | 欧美黄色免费| 国产模特精品视频久久久久| 亚洲人成小说网站色在线| 黄色日韩在线| 亚洲一区二区伦理| 日韩一级大片在线| 久久综合国产精品| 亚洲精品久久久久久久久久久| 亚洲激情在线播放| 欧美日韩日日骚| 亚洲第一在线综合网站| 欧美精品在欧美一区二区少妇| 美女日韩在线中文字幕| 蜜臀久久99精品久久久久久9 | 国内成人自拍视频| 欧美国产日韩一区二区| 国产一区二区三区观看| 亚洲欧美日产图| 欧美亚洲自偷自偷| 久久福利一区| 在线播放精品| 久久久99国产精品免费| 亚洲精品乱码久久久久| 麻豆av一区二区三区久久| 久久人人97超碰精品888| 美国十次成人| 亚洲国产精品视频| 国产伦精品一区二区三区在线观看 | 欧美成人激情在线| 在线成人av网站| 久久综合久久综合久久综合| 欧美成年人视频网站欧美| 在线观看日韩av| 毛片一区二区三区| 日韩一二三在线视频播| 亚洲午夜未删减在线观看| 国产精品a级| 欧美暴力喷水在线| 亚洲日韩第九十九页| 欧美日韩精品在线| 欧美成人午夜激情| 亚洲乱码精品一二三四区日韩在线 | 夜夜嗨av一区二区三区网站四季av| 狠狠色噜噜狠狠色综合久| 久久精品亚洲乱码伦伦中文| 欧美成人免费在线观看| 99国产精品一区| 国产精品美女一区二区在线观看| 久久久久久噜噜噜久久久精品| 在线观看一区| 欧美日韩一级视频| 欧美在线观看视频在线| 欧美国内亚洲| 亚洲专区一二三| 欧美屁股在线| 午夜精品久久久久| 欧美成人一区二区三区在线观看| 一区二区欧美激情| 黄色免费成人| 欧美日韩亚洲综合在线| 欧美一区二区在线视频| 性色av一区二区三区在线观看| 国产亚洲一区二区三区在线观看| 欧美1区视频| 欧美国产日韩二区| 午夜久久久久| 国产精品日韩精品| 99国产精品一区| 久久免费黄色| 午夜国产精品视频| 亚洲国产精品久久久久秋霞影院| 欧美午夜影院| 欧美激情精品久久久久久黑人| 亚洲国产另类久久久精品极度| 亚洲欧美中文日韩在线| 亚洲区第一页| 欧美激情精品久久久| 性色一区二区| 一本久道久久久| 亚洲国产日韩欧美一区二区三区| 欧美中文字幕在线播放| 亚洲视频在线播放| 亚洲精品国产精品久久清纯直播| 国产日韩欧美中文| 久久久一区二区三区| 欧美国产专区| 久久精品国产清自在天天线| 黑人极品videos精品欧美裸| 国产精品久久久亚洲一区 | av72成人在线| 亚洲国产视频一区二区| 久久夜色精品国产噜噜av| 亚洲国产精品成人久久综合一区| 国产私拍一区| 国产精品一区二区久久国产| 国产精品极品美女粉嫩高清在线 | 一区二区三区福利| 亚洲资源av| 在线亚洲+欧美+日本专区| 一区二区av在线| 日韩一级在线观看| 一本一本久久| 一本一本久久a久久精品综合麻豆| 日韩视频永久免费观看| 日韩视频在线观看一区二区| 91久久中文| 亚洲乱码国产乱码精品精天堂| 日韩一级欧洲| 亚洲欧美日韩精品久久奇米色影视| 国产一区二区三区黄视频| 麻豆精品传媒视频| 美女视频黄 久久| 欧美激情一区二区久久久| 91久久在线播放| 亚洲三级视频| 亚洲一区二区免费在线| 欧美一区二区三区免费观看| 久久av最新网址| 欧美大片免费久久精品三p | 久久久午夜精品| 蜜臀久久99精品久久久久久9| 免费不卡在线观看av| 亚洲春色另类小说| 久久精品二区亚洲w码| 久久视频在线看| 亚洲第一天堂无码专区| 一区二区三区回区在观看免费视频| 亚洲一区二区免费视频| 久久精品人人做人人综合| 欧美大片一区二区| 国产精品入口夜色视频大尺度 | 欧美激情综合亚洲一二区| 欧美午夜宅男影院在线观看| 国产一区二区三区av电影 | 欧美视频在线观看 亚洲欧| 国产日韩免费| 亚洲免费观看在线视频| 欧美一区二区私人影院日本 | 亚洲激情网站| 亚洲欧美久久久久一区二区三区| 久久嫩草精品久久久精品| 亚洲国产精品久久久久久女王| 日韩一级黄色大片| 久久久久久久久久久久久久一区| 欧美日韩亚洲系列| 亚洲激情网站| 久久精品91久久久久久再现| 亚洲精品中文字幕在线| 亚洲福利在线看| 欧美一区二区成人6969|