СергейСВ
Гость
|
|
« Ответ #1 : 24-06-2004 13:35 » |
|
Пример консольного приложения, которое рисует флаг РФ на экране из предварительно сформированного массива пикселей, формат которого не обязательно совпадает с форматом экрана. (И быстро между прочим)
#include "windows.h" #include "iostream.h" #include "bitmapex.h"
void main(int argc, char* argv[]) { HDC hdc; HBITMAP hbmp; BITMAPINFO info; unsigned short int * bmbuf; int i,j; hdc=GetWindowDC(NULL);
info.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); info.bmiHeader.biBitCount=16; info.bmiHeader.biClrImportant=0; info.bmiHeader.biClrUsed=0;//65536; info.bmiHeader.biCompression=BI_RGB; // no compression info.bmiHeader.biPlanes=1; info.bmiHeader.biWidth =768; info.bmiHeader.biHeight=-576; cout<<"info.bmiHeader.biWidth =768;info.bmiHeader.biHeight=-576;"<<endl; cout<<"info.bmiHeader.biClrUsed=32768;"<<endl;
hbmp=CreateDIBSection( hdc, &info, DIB_RGB_COLORS, (void**)&bmbuf, NULL, 0); j=0x10000; for (i=0; i<j; i++) bmbuf=0x4400; // red msb + lsb, max=7c00 j=0x20000; for (i=i; i<j; i++) bmbuf=0x220; // green msb + lsb, max=3e0 j=0x30000; for (i=i; i<j; i++) bmbuf=0x11; // blue msb + lsb, max=1f j=SetDIBitsToDevice( hdc, 150,50, 512, 512, // Width and Height 0, 0, 0, 512, &bmbuf[0], &info, DIB_RGB_COLORS); cout<<j<<endl; }
|