Re: Масштабирование картинки в памяти
Здравствуйте !
Гы ! Типа счас буду писать конструктивную критику :)
> CDC export_dc(::CreateCompatibleDC(::GetWindowDC(m_hWnd)));
Мда... А возвращаемые значения принципиально не проверяются
(типа там, если CreateCompatibleDC или GetWindowDC NULL вернут) ?
> unsigned char *export_bits = new unsigned char[m_export_width *
> m_export_height * 4];
Формула совсем не всегда верна. Надо вычислять так :
((m_export_width * cClrBits + 31) & ~31) / 8 * m_export_height, где
cClrBits - бит на пиксел (в твоем случае - 32)
> CBitmap oldBitmap = export_dc.SelectBitmap(export_bitmap);
наверно тут CBitmap *pOldBitmap = ...
^ надо ?
> export_dc.FillRect(CRect(15,15, 35,35),
> ::CreateSolidBrush(COLORREF(0x00ff00)));
Здесь будет происходить утечка ресурсов (дескриптор, возвращаемый
CreateSolidBrush просто теряется) - надо такие вещи DeleteObject
делать.
> //export_dc.SelectBitmap(oldBitmap);
То же... надо : export_dc.SelectBitmap(*pOldBitmap);
> BITMAPINFO bitmap_info = {{sizeof(BITMAPINFO), m_export_width,
> m_export_height,
> 1, 32, BI_RGB, 0, 0, 0, 0, 0},
> {255,0,0,0}};
Гм... А зачем тут RGBQUAD вставлять ? Тут же 32 бит изображение ?
> export_bitmap.GetDIBits(export_dc,0, m_export_height, .........
> // сохраняем export_bits в файл
Нда... а заголовок кто за Вас сохранит ?
Про BITMAPFILEHEADER что нибудь читали ?
> После сохранения в файл получаю черную картинку с правильным
> квадратиком, но не зеленого цвета, а чб шума.
> Все что можно перепробывал .. вообще голова отказывается варить :(
Странно, что вообще что то получилось ;-)
Я же давал ссылку :
http://softmaker.fatal.ru/sources/vc/graphics/WinToFile.zip (28.3 kb).
Просто скачай и изучи функции созранения в файл.
Если посмотреть в MSDN - там такого куча (есть прямо классы для работы
с DIB). Поищи по словам "Storing Image". Или поищи "CreateBMPFile",
"CreateBitmapInfoStruct".
--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Номер выпуска : 3320
Возраст листа : 277 (дней)
Количество подписчиков : 432
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/178486
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать : mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru