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

Beginning to 編程

VC++ 方面編程文章

 

一些基本的GDI操作BITMAP的方法 /zhuan

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-10 11:27 Beginning to 編程 閱讀(1446) 評論(0)  編輯 收藏 引用 所屬分類: 關鍵代碼

導航

統計

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

文章檔案

相冊

BlogDev

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国内伊人久久久久久网站视频| 国产精品久久久一本精品| 久久久精品久久久久| 欧美三级在线播放| 亚洲成色最大综合在线| 亚洲综合清纯丝袜自拍| 亚洲国产美女| 欧美99久久| 欧美一区免费| 国产精品自在线| 久久精品一区中文字幕| 欧美黄在线观看| 欧美成人国产va精品日本一级| 国产在线视频欧美| 欧美va天堂在线| 欧美激情免费观看| 99精品免费网| 午夜性色一区二区三区免费视频| 国产日韩精品久久| 蜜臀99久久精品久久久久久软件| 美日韩精品视频免费看| 亚洲无限乱码一二三四麻| 亚洲一级免费视频| 韩国精品在线观看| 亚洲激情在线视频| 国产精品裸体一区二区三区| 欧美成人在线网站| 国产精品久久久久aaaa九色| 久久se精品一区精品二区| 欧美成人免费在线观看| 久久精品视频免费| 欧美区高清在线| 另类综合日韩欧美亚洲| 欧美午夜精品| 亚洲精品中文字幕在线| 国产一区清纯| 亚洲视频在线观看网站| 亚洲激情一区二区三区| 亚洲精品亚洲人成人网| 亚洲第一中文字幕| 久久精品国产清高在天天线| 一本大道久久a久久精品综合| 欧美专区中文字幕| 99综合精品| 欧美a级片网站| 国内自拍亚洲| 久久九九免费视频| 欧美电影打屁股sp| 国产精品自在线| 久久国产精品免费一区| 久久久精品tv| 韩国免费一区| 美日韩精品免费| 亚洲精品欧美专区| 亚洲永久网站| 国产亚洲欧美另类一区二区三区| 午夜精品久久久久久久蜜桃app| 9i看片成人免费高清| 国产日韩精品一区| 久久免费视频这里只有精品| 欧美大片91| 亚洲伊人久久综合| 国产欧美一区二区精品婷婷 | 亚洲女性裸体视频| 午夜欧美电影在线观看| 国产在线国偷精品产拍免费yy| 欧美一区三区二区在线观看| 亚洲国产精品va在看黑人| 亚洲尤物影院| 夜夜嗨av一区二区三区中文字幕| 欧美成人tv| 久久精品国产2020观看福利| 99国内精品久久| 欧美高潮视频| 久久久夜色精品亚洲| 亚洲一区美女视频在线观看免费| 狠狠久久亚洲欧美专区| 免费观看亚洲视频大全| 欧美在线视频a| 亚洲欧美日韩国产综合| 亚洲性av在线| 亚洲一区二区黄| 亚洲毛片一区二区| 亚洲激情午夜| 影音先锋日韩精品| 精品成人久久| 今天的高清视频免费播放成人| 国产欧美日韩亚洲精品| 国产精品盗摄久久久| 欧美国产日本在线| 欧美日韩免费观看一区二区三区| 欧美成人日韩| 国产裸体写真av一区二区| 国产视频一区在线| 伊人精品在线| 久久国产欧美精品| 日韩亚洲欧美成人| 久久精品欧美日韩精品| 国产精品白丝黑袜喷水久久久| 狠狠综合久久av一区二区老牛| 一本大道久久a久久精二百| 欧美一区二区福利在线| 亚洲精品乱码久久久久久日本蜜臀| 一区二区三区欧美在线| 欧美激情第8页| 一区二区三区在线视频免费观看 | 亚洲人午夜精品| 久久深夜福利免费观看| 国产欧美日韩在线| 久久狠狠亚洲综合| 亚洲愉拍自拍另类高清精品| 欧美视频成人| 午夜久久久久久| 亚洲综合首页| 在线观看福利一区| 裸体素人女欧美日韩| 久久一区国产| 亚洲欧洲精品一区| 亚洲国产你懂的| 欧美日韩精品一区二区天天拍小说| 亚洲美女免费视频| 这里只有精品视频| 欧美在线观看天堂一区二区三区 | 亚洲专区免费| 亚洲尤物在线视频观看| 国产一区二区成人| 欧美激情第9页| 欧美日韩专区在线| 久久久久久久成人| 美国十次了思思久久精品导航| 亚洲欧洲中文日韩久久av乱码| 亚洲日韩欧美视频一区| 欧美午夜精品一区二区三区| 亚洲欧美色一区| 狂野欧美激情性xxxx| 午夜精品久久久久久久蜜桃app | 亚洲电影毛片| 欧美亚洲成人网| 欧美成人精品福利| 国产精品自拍一区| 亚洲欧洲在线一区| 黄色日韩网站| 亚洲欧美日产图| 亚洲视频一起| 欧美不卡高清| 美国十次成人| 国产情人节一区| 亚洲视频播放| 一区二区三区产品免费精品久久75| 久久亚洲图片| 免费观看成人www动漫视频| 国产精品区免费视频| 99在线精品视频| 亚洲私人影院| 欧美日韩一区二区在线观看| 欧美高清一区二区| 亚洲片国产一区一级在线观看| 亚洲欧美在线高清| 久久久免费精品视频| 国产一区二区三区久久精品| 亚洲午夜日本在线观看| 亚洲欧美综合精品久久成人| 国产伦精品一区二区三区高清| 在线视频你懂得一区二区三区| 日韩视频专区| 午夜精品成人在线视频| 欧美综合国产| 亚洲国产精品精华液网站| 欧美成人激情视频| 亚洲视频一起| 久久综合九色综合久99| 国内精品久久久久久久果冻传媒| 久久精品视频在线观看| 欧美日韩亚洲一区二区三区在线观看| 亚洲清纯自拍| 久久国产精品黑丝| 亚洲乱码国产乱码精品精98午夜| 欧美视频免费| 玖玖国产精品视频| 亚洲在线播放电影| 亚洲电影免费观看高清完整版在线观看 | 嫩模写真一区二区三区三州| 亚洲激情视频网| 久久久久免费视频| 一区二区高清视频| 黄色一区二区三区| 国产精品麻豆欧美日韩ww| 欧美激情精品久久久久久免费印度| 欧美一区二区三区免费观看视频| 欧美国产日韩在线| 免费高清在线视频一区·| 午夜精品999| 亚洲综合好骚| 亚洲自拍都市欧美小说| 亚洲日本欧美| 亚洲精品国精品久久99热一| 国产精品视频网址| 国产欧美日本在线| 国产一区二区三区四区hd| 国产裸体写真av一区二区|