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

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>
            一区二区三区免费观看| 亚洲免费一在线| 亚洲国产黄色片| 国产精品福利网站| 欧美日韩国产小视频在线观看| 久久综合免费视频影院| 久久精品国产999大香线蕉| 亚洲图中文字幕| 99国产精品| 日韩一级精品视频在线观看| 亚洲欧洲另类国产综合| 国产亚洲精品v| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲国产日韩美| 在线日韩欧美视频| 亚洲精品少妇30p| 亚洲天堂第二页| 久久精品一区四区| 麻豆精品在线视频| 免费在线成人| 日韩亚洲精品电影| 欧美日韩高清区| 亚洲视频在线观看三级| 99视频精品全部免费在线| 欧美日韩精品是欧美日韩精品| av成人免费| 久久激情婷婷| 亚洲黄色av一区| 一区二区三区免费看| 欧美在线播放| 欧美激情精品久久久久久蜜臀 | 国产精品日日摸夜夜摸av| 国产主播精品| 亚洲破处大片| 香蕉久久国产| 老司机午夜精品| 久久免费视频观看| 国产精品v欧美精品v日韩 | 亚洲第一在线综合在线| 狂野欧美一区| 欧美精品在线网站| 国内精品视频在线观看| 免费亚洲电影在线观看| 欧美日韩国产经典色站一区二区三区 | 亚洲国产精品t66y| 日韩视频在线一区| 国产亚洲在线| 亚洲精品视频在线播放| 久久久www成人免费无遮挡大片 | 一本综合久久| 久久精品99国产精品| 最新国产成人av网站网址麻豆| 日韩亚洲欧美综合| 激情文学综合丁香| 久久久亚洲高清| 在线观看视频一区二区| 国产日韩视频一区二区三区| 亚洲激情成人网| 日韩亚洲欧美高清| 亚洲成色精品| 久久性天堂网| 亚洲欧美国产77777| 一区二区三区我不卡| 亚洲精品久久久一区二区三区| 欧美成人免费全部| 在线观看欧美日本| 亚洲精选大片| 激情综合色综合久久| 一区二区不卡在线视频 午夜欧美不卡'| 国产亚洲一级| 亚洲欧美日韩国产成人| 国产毛片精品视频| 久久av一区二区三区漫画| 亚洲国产毛片完整版 | 国产一区久久| 一区二区久久久久| 亚洲人线精品午夜| 久久久久久久久蜜桃| 黄色成人免费观看| 美女爽到呻吟久久久久| 国产精品社区| 中日韩高清电影网| 国产伦精品一区二区三区四区免费| 欧美国产欧美亚州国产日韩mv天天看完整| 久久精品人人| 欧美在线观看天堂一区二区三区| 欧美在线视频在线播放完整版免费观看| 日韩视频一区二区三区在线播放免费观看 | 亚洲午夜激情免费视频| 亚洲一级片在线观看| 亚洲少妇在线| 亚洲视频一区二区| 欧美日韩激情网| 日韩一级免费| 亚洲欧美99| 久久久久成人网| 久久亚洲二区| 有坂深雪在线一区| 久久在线免费视频| 欧美激情一区二区三级高清视频 | 亚洲国产精品成人| 久久综合影音| 亚洲国产一区二区视频| 亚洲美女中出| 欧美日韩高清不卡| 亚洲一区二区三区在线观看视频| 在线日韩成人| 欧美大片免费观看| 亚洲毛片在线观看| 亚洲欧美日韩区| 韩日在线一区| 欧美成人一区二区三区| 一区二区三区高清不卡| 久久av二区| 91久久精品国产91性色| 一本色道88久久加勒比精品 | 免费看亚洲片| 久久成人免费视频| 午夜欧美大尺度福利影院在线看| 一本一本久久| 亚洲天堂av图片| 欧美午夜精品一区| 欧美亚洲免费| 一区二区冒白浆视频| 欧美三级电影一区| 欧美制服丝袜第一页| 国产中文一区| 欧美精品播放| 免费国产一区二区| 亚洲免费福利视频| 国产伦精品一区二区三区免费迷 | 久久激五月天综合精品| 欧美激情中文字幕一区二区| 亚洲一区二区三区激情| 一区二区在线视频| 欧美三级日本三级少妇99| 亚洲一卡久久| 亚洲激情影视| 在线亚洲欧美| 亚洲婷婷国产精品电影人久久| 亚洲一区二区三区四区五区午夜| 国产一区二区三区黄| 亚洲一区二区在线免费观看| 国产精品女同互慰在线看| 欧美区在线观看| 欧美在线首页| 国产精品激情电影| 亚洲韩国日本中文字幕| 国产精品女主播| 亚洲福利国产| 亚洲国产日韩一区二区| 欧美大片18| 久久精品毛片| 国产精品99久久久久久久久| 久久久国产精品一区| 模特精品在线| 亚洲国产高潮在线观看| 99精品福利视频| 国产精品国产自产拍高清av| 亚洲片在线观看| 在线亚洲欧美| 国产精品久久久久久久电影| 亚洲人体影院| 亚洲精品影院| 欧美午夜a级限制福利片| 亚洲一级一区| 国产色婷婷国产综合在线理论片a| 亚洲性夜色噜噜噜7777| 亚洲欧美日本国产有色| 欧美一级理论片| 亚洲精品乱码久久久久久按摩观 | 亚洲午夜精品久久久久久app| 一本色道久久综合| 国产午夜精品在线| 亚洲国产成人在线| 国产精品久久久久久久久免费樱桃| 欧美亚洲在线播放| 久久天天躁狠狠躁夜夜av| 日韩视频一区二区在线观看| 性欧美长视频| 蜜桃久久av| 欧美日韩精品在线| 久久综合伊人77777尤物| 欧美国产日韩一二三区| 免费观看30秒视频久久| 国产欧美在线| 亚洲美女电影在线| 久久久国产成人精品| 久久激情网站| 国产精品一区2区| 亚洲欧美日产图| 欧美中文字幕不卡| 国产热re99久久6国产精品| 久久人人97超碰精品888| 最新国产成人av网站网址麻豆 | 激情文学综合丁香| 美女脱光内衣内裤视频久久影院 | 国产色产综合产在线视频| 欧美一区高清| 久久激情视频久久|