• <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>

            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 放屁阿狗 閱讀(2381) 評論(0)  編輯 收藏 引用
            亚洲综合精品香蕉久久网| 91视频国产91久久久| 人妻精品久久无码区| 深夜久久AAAAA级毛片免费看| 亚洲级αV无码毛片久久精品| 中文字幕久久精品| 久久久WWW成人免费毛片| 精品久久久久久成人AV| 亚洲国产精品成人久久| 国产亚洲精久久久久久无码77777| 久久强奷乱码老熟女| 久久高清一级毛片| 国产成人久久精品二区三区| 成人资源影音先锋久久资源网| 国内精品久久久久影院一蜜桃| 蜜臀久久99精品久久久久久小说| 精品人妻伦九区久久AAA片69| 一本久道久久综合狠狠躁AV| 久久综合久久美利坚合众国 | 国产成人久久激情91| 久久九九精品99国产精品| 久久久久亚洲精品无码蜜桃 | 久久人人爽人人爽人人片av麻烦| 久久艹国产| 九九精品久久久久久噜噜| 尹人香蕉久久99天天拍| 久久久午夜精品福利内容| 久久久久国产精品人妻| 777米奇久久最新地址| 久久国产成人午夜aⅴ影院| 性高湖久久久久久久久AAAAA| 久久亚洲日韩看片无码| 精品久久久久久无码专区| 久久婷婷色综合一区二区| 色综合久久无码中文字幕| 夜夜亚洲天天久久| 久久久精品久久久久影院| 久久婷婷国产综合精品| 久久久噜噜噜久久中文字幕色伊伊| 综合久久一区二区三区| 久久精品国产秦先生|