Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2004-06-25

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

   2004-06-25 22:22:52 (#178486)

Re: Масштабирование картинки в памяти

[24.06.2004 17:26] Обнаружено письмо от Elmo
[24.06.2004 17:26] Тема "Масштабирование картинки в памяти"

Блин вообще ничего не понимаю...

CDC export_dc(::CreateCompatibleDC(::GetWindowDC(m_hWnd)));
CBitmap export_bitmap(::CreateCompatibleBitmap(export_dc, m_export_width, m_export_height));
unsigned char *export_bits = new unsigned char[m_export_width * m_export_height
* 4];

CBitmap oldBitmap = export_dc.SelectBitmap(export_bitmap);

export_dc.FillRect(CRect(15,15, 35,35), ::CreateSolidBrush(COLORREF(0x00ff00)));

//export_dc.SelectBitmap(oldBitmap);

BITMAPINFO bitmap_info = {{sizeof(BITMAPINFO), m_export_width, m_export_height,
1, 32, BI_RGB, 0, 0, 0, 0, 0},
{255,0,0,0}};
export_bitmap.GetDIBits(export_dc,0, m_export_height, export_bits, &bitmap_info,
DIB_RGB_COLORS);

// сохраняем export_bits в файл

delete[] export_bits;

После сохранения в файл получаю черную картинку с правильным
квадратиком, но не зеленого цвета, а чб шума.

Все что можно перепробывал .. вообще голова отказывается варить :(

ЗЫ: пошел за сигаретами, с обеда не курю :(((

С пожеланием доброго времени суток,
Олень Элмо

JabberID: da.el***@j*****.ru

Номер выпуска : 3319
Возраст листа : 277 (дней)
Количество подписчиков : 432
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/178130
Получить правила : 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

   Elmo 2004-06-25 15:09:30 (#178130)

Re: Масштабирование картинки в памяти

[24.06.2004 17:26] Обнаружено письмо от Elmo
[24.06.2004 17:26] Тема "Масштабирование картинки в памяти"

Блин вообще ничего не понимаю...

CDC export_dc(::CreateCompatibleDC(::GetWindowDC(m_hWnd)));
CBitmap export_bitmap(::CreateCompatibleBitmap(export_dc, m_export_width, m_export_height));
unsigned char *export_bits = new unsigned char[m_export_width * m_export_height
* 4];

CBitmap oldBitmap = export_dc.SelectBitmap(export_bitmap);

export_dc.FillRect(CRect(15,15, 35,35), ::CreateSolidBrush(COLORREF(0x00ff00)));

//export_dc.SelectBitmap(oldBitmap);

BITMAPINFO bitmap_info = {{sizeof(BITMAPINFO), m_export_width, m_export_height,
1, 32, BI_RGB, 0, 0, 0, 0, 0},
{255,0,0,0}};
export_bitmap.GetDIBits(export_dc,0, m_export_height, export_bits, &bitmap_info,
DIB_RGB_COLORS);

// сохраняем export_bits в файл

delete[] export_bits;

После сохранения в файл получаю черную картинку с правильным
квадратиком, но не зеленого цвета, а чб шума.

Все что можно перепробывал .. вообще голова отказывается варить :(

ЗЫ: пошел за сигаретами, с обеда не курю :(((

С пожеланием доброго времени суток,
Олень Элмо

JabberID: da.el***@j*****.ru

Номер выпуска : 3318
Возраст листа : 277 (дней)
Количество подписчиков : 432
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/178098
Получить правила : 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

   Elmo 2004-06-25 14:44:45 (#178098)

[link] Книги по программированию для скачивания

Здравствуйте !

Не так давно была тема про книги...
Вот - выложил несколько книжек на бесплатный хост.
Кому надо - можете качать :

Дейл Роджерсон
"Inside COM" (2-е издание) (rus)
http://softmaker.fatal.ru/books/com/InsideCOM_rus.rar (2.3 mb)

Джеффри РИХТЕР
"Создание эффективных WIN32-приложений
с учетом специфики 64-разрядной версии Windows" (rus)
http://softmaker.fatal.ru/books/windows/richter.rar (5.3 mb)

"Exceptional C++: 47 Engineering Puzzles, Programming
Problems, and Solutions" (eng)
http://softmaker.fatal.ru/books/cpp/exceptional_cpp.zip (351 kb)

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru

Номер выпуска : 3317
Возраст листа : 277 (дней)
Количество подписчиков : 432
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/177766
Получить правила : 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

   2004-06-25 05:44:23 (#177766)