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);
SetDIBBits и GetDIBBits
Код:
Осваиваюсь с функциями GetDIBBits и SetDIBBits
Для проверки считываю битмап в буфер, затем из буфера в image...
Bitmap - не пуст - проверено заранее...
каждый раз после SetDIB и GetDIB i= 1024, вроде как все нормально но image - белый фон ?
если кто разбирается - подскажите ... плиз..
Цитата:
Originally posted by DiCo
Осваиваюсь с функциями GetDIBBits и SetDIBBits
Для проверки считываю битмап в буфер, затем из буфера в image...
Bitmap - не пуст - проверено заранее...
каждый раз после SetDIB и GetDIB i= 1024, вроде как все нормально но image - белый фон ?
если кто разбирается - подскажите ... плиз..
Код:
i = SetDIBits(tdc, btmp, 0, oy,buf, &binfo, DIB_RGB_COLORS);
BitBlt(dcnew, 0 , 0, ox,oy, tdc, 0, 0, SRCCOPY);
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);
DeleteObject(SelectObject(tdc, btmp));
BitBlt(dcnew, 0 , 0, ox,oy, tdc, 0, 0, SRCCOPY);