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

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

導航

統(tǒng)計

常用鏈接

留言簿(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>
            欧美一乱一性一交一视频| 久久国产免费看| 国产色产综合色产在线视频| 欧美一区在线直播| 日韩午夜在线观看视频| 久久福利精品| 尤妮丝一区二区裸体视频| 欧美日韩精品一区二区三区| 性亚洲最疯狂xxxx高清| 亚洲激情国产| 久久久999精品免费| 一区二区三区 在线观看视| 国产一区二区三区在线观看精品 | 国产一区白浆| 欧美日本国产在线| 久久婷婷av| 亚洲尤物在线视频观看| 亚洲狠狠婷婷| 免播放器亚洲一区| 亚洲欧美制服另类日韩| 日韩性生活视频| 国产亚洲一区二区在线观看| 欧美区日韩区| 久热re这里精品视频在线6| 午夜精品一区二区三区在线播放| 91久久久久久久久| 男男成人高潮片免费网站| 欧美一级大片在线观看| 亚洲午夜在线视频| 亚洲伦伦在线| 最新亚洲一区| 狠狠v欧美v日韩v亚洲ⅴ| 欧美日韩天天操| 欧美成人精品影院| 久久久999精品视频| 香蕉尹人综合在线观看| 亚洲性夜色噜噜噜7777| 亚洲免费成人| 日韩视频免费观看| 亚洲精品视频啊美女在线直播| 免费观看成人www动漫视频| 久久精品综合| 久久久综合网站| 久久精彩免费视频| 久久精品久久综合| 久久精品国产欧美激情| 欧美在线观看日本一区| 欧美一区二区三区在线播放| 亚洲视频一起| 亚洲视频在线观看视频| 一本色道久久综合亚洲精品不卡| 狠狠色狠狠色综合| 在线观看精品| 亚洲精品你懂的| 亚洲精品专区| 国产精品99久久久久久人| 亚洲视频免费看| 性欧美1819sex性高清| 性刺激综合网| 久久亚洲精选| 欧美成人dvd在线视频| 欧美成人嫩草网站| 亚洲激情午夜| 一区二区三区四区国产精品| 亚洲视频中文| 欧美一区二区三区精品电影| 久久精品国产欧美激情| 久久一区二区精品| 欧美va亚洲va国产综合| 久久天天躁夜夜躁狠狠躁2022| 久久av红桃一区二区小说| 欧美在线观看网站| 免费在线成人| 欧美视频在线观看视频极品| 国产精品欧美久久| 国内精品久久久久影院优| 在线精品一区二区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久噜噜亚洲综合| 男人的天堂亚洲| 亚洲美女视频在线观看| 亚洲欧美日韩另类精品一区二区三区| 欧美一区影院| 欧美激情1区| 国产欧美日韩在线播放| 在线成人免费观看| 一本色道久久综合精品竹菊| 欧美一区精品| 亚洲国产精品一区二区第四页av| 亚洲品质自拍| 欧美一区二区日韩| 欧美激情在线播放| 国产午夜精品理论片a级探花| 亚洲二区免费| 亚洲欧美资源在线| 欧美顶级艳妇交换群宴| 亚洲一区二区三区视频| 久久网站热最新地址| 欧美日韩中文在线观看| 国外成人在线| 一区二区三区|亚洲午夜| 久久久国产91| 一区二区三区精品视频| 免费不卡在线视频| 欧美片在线播放| 国产精品久线观看视频| 亚洲日本aⅴ片在线观看香蕉| 午夜精品国产| 亚洲人体1000| 久久尤物电影视频在线观看| 国产精品福利网| 亚洲精品一区二区三区在线观看| 亚洲中字黄色| 亚洲日本久久| 免费h精品视频在线播放| 国产午夜精品久久久久久久| 一二三区精品| 亚洲成人在线网站| 久久成人精品视频| 国产精品大片wwwwww| 亚洲精选在线观看| 久久青草欧美一区二区三区| 日韩午夜黄色| 欧美风情在线观看| 欧美激情视频在线播放| 国产亚洲一本大道中文在线| 国产精品99久久99久久久二8 | 午夜精品久久久久久久99水蜜桃| 欧美精品国产精品| 亚洲激情电影在线| 蜜臀av一级做a爰片久久 | 国产专区精品视频| 久久成人免费电影| 午夜久久影院| 国产日韩欧美在线| 亚洲永久免费精品| 一二三四社区欧美黄| 欧美大胆人体视频| 日韩亚洲精品电影| 亚洲国产精品第一区二区| 噜噜噜躁狠狠躁狠狠精品视频 | 一本色道久久综合亚洲91| 欧美精品久久久久久| 亚洲日本久久| 亚洲欧洲精品一区| 欧美精品一区二区三区视频| 亚洲国产精品毛片| 欧美激情在线| 欧美精品99| 一区二区电影免费观看| 日韩一二三在线视频播| 欧美.www| 亚洲欧美www| 亚洲综合不卡| 国产亚洲第一区| 久久一区中文字幕| 久久综合九色综合欧美就去吻| 亚洲第一精品福利| 欧美福利网址| 国产精品九九久久久久久久| 亚洲欧美成人在线| 久久久久久噜噜噜久久久精品| 亚洲第一色在线| 亚洲美女精品成人在线视频| 国产精品豆花视频| 性做久久久久久免费观看欧美| 久久精品30| 亚洲激情在线播放| 亚洲美女电影在线| 国产欧美视频在线观看| 麻豆av一区二区三区| 欧美日韩亚洲综合一区| 欧美在线一区二区三区| 免费观看在线综合色| 宅男噜噜噜66一区二区 | 亚洲精品久久久久久久久久久久久 | 欧美亚洲在线| 久久精品91久久香蕉加勒比| 日韩一级精品| 亚洲欧美电影院| 亚洲高清不卡一区| 亚洲免费观看在线观看| 国产精品尤物福利片在线观看| 欧美在线视频观看| 米奇777超碰欧美日韩亚洲| 99精品视频一区| 欧美一区二区三区四区夜夜大片| 黄色在线一区| 久久漫画官网| 欧美精品一区三区在线观看| 亚洲欧美资源在线| 免费视频一区二区三区在线观看| 日韩视频―中文字幕| 亚洲欧美日韩精品久久久| 在线欧美日韩精品| 亚洲免费一级电影| 亚洲精品免费在线播放| 羞羞视频在线观看欧美| 日韩亚洲欧美一区| 性久久久久久久久|