Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

SetDIBBits и GetDIBBits

5.4K
26 мая 2004 года
DiCo
12 / / 22.05.2004
Код:
COLORREF* buf;
   BITMAPINFO binfo;

   BITMAPINFOHEADER head;

   head.biSize      =sizeof(BITMAPINFOHEADER);
   head.biWidth     =ox;
   head.biHeight        =oy;
   head.biPlanes        =1;
   head.biBitCount      =32;
   head.biCompression   =BI_RGB;
   head.biSizeImage =0;
   head.biXPelsPerMeter =0;
   head.biYPelsPerMeter =0;
   head.biClrUsed       =0;
   head.biClrImportant  =0;

   RGBQUAD      quad;
   quad.rgbBlue      =255;
   quad.rgbRed       =255;
   quad.rgbGreen     =255;
   quad.rgbReserved  =0;

   binfo.bmiHeader=head;
   binfo.bmiColors[0]=quad;

   buf = new COLORREF[oy*ox];

   int i = GetDIBits(dcview, bimg, 0, oy, buf, &binfo, DIB_RGB_COLORS);

   HDC dcnew = imgMain->Canvas->Handle;
   int w=GetDeviceCaps(dcnew, HORZRES);
   int h=GetDeviceCaps(dcnew, VERTRES);
   HDC tdc = CreateCompatibleDC(dcnew);
   HBITMAP btmp = CreateCompatibleBitmap(dcnew, w,h);
   i = SetDIBits(tdc, btmp, 0, oy,buf, &binfo, DIB_RGB_COLORS);

   BitBlt(dcnew, 0 , 0, ox,oy, tdc, 0, 0, SRCCOPY);

Осваиваюсь с функциями GetDIBBits и SetDIBBits
Для проверки считываю битмап в буфер, затем из буфера в image...
Bitmap - не пуст - проверено заранее...
каждый раз после SetDIB и GetDIB i= 1024, вроде как все нормально но image - белый фон ?
если кто разбирается - подскажите ... плиз..
5.8K
04 июня 2004 года
andrey_l_s
8 / / 25.12.2003
Цитата:
Originally posted by DiCo
 
Код:
i = SetDIBits(tdc, btmp, 0, oy,buf, &binfo, DIB_RGB_COLORS);

   BitBlt(dcnew, 0 , 0, ox,oy, tdc, 0, 0, SRCCOPY);


Осваиваюсь с функциями GetDIBBits и SetDIBBits
Для проверки считываю битмап в буфер, затем из буфера в image...
Bitmap - не пуст - проверено заранее...
каждый раз после SetDIB и GetDIB i= 1024, вроде как все нормально но image - белый фон ?
если кто разбирается - подскажите ... плиз..


А надо:

 
Код:
i = SetDIBits(tdc, btmp, 0, oy,buf, &binfo, DIB_RGB_COLORS);

   DeleteObject(SelectObject(tdc, btmp));

   BitBlt(dcnew, 0 , 0, ox,oy, tdc, 0, 0, SRCCOPY);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог