Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CImage и HBITMAP 
:(
    Опции темы
Гость_Leksey
Дата 29.7.2005, 10:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вот есть кусок кода который я использую в OnPrint для печати изображения.
Когда я загружаю картинку из файла все работает, но когда заменяю строчку
Код

hbit = (HBITMAP) LoadImage(0,your_bmp_file,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);

на
Код

hbit=image;//CImage image

Ничего не получаю на принтере?
smile
Код

LPBITMAPINFO info; 
HBITMAP hbit; 
BITMAP bm; 
int nColors = 0; 
int sizeinfo = 0; 
RGBQUAD rgb[256]; 
hbit = (HBITMAP) LoadImage(0,your_bmp_file,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);
GetObject(hbit, sizeof(BITMAP), (LPVOID) &bm);
int nColors = (1 << bm.bmBitsPixel);
if(nColors > 256)
nColors=0; 
sizeinfo = sizeof(BITMAPINFO) + (nColors * sizeof(RGBQUAD));
info = (LPBITMAPINFO) malloc(sizeinfo); // Storing info in memory
info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
info->bmiHeader.biWidth = bm.bmWidth;
info->bmiHeader.biHeight = bm.bmHeight;
info->bmiHeader.biPlanes = 1;
info->bmiHeader.biBitCount = bm.bmBitsPixel * bm.bmPlanes;
info->bmiHeader.biCompression = BI_RGB;
info->bmiHeader.biSizeImage = bm.bmWidthBytes * bm.bmHeight;
info->bmiHeader.biXPelsPerMeter = 0;
info->bmiHeader.biYPelsPerMeter = 0;
info->bmiHeader.biClrUsed = 0;
info->bmiHeader.biClrImportant = 0;
if(nColors <= 256)
{
HBITMAP hOldBitmap;
HDC hMemDC = CreateCompatibleDC(NULL); 
hOldBitmap = (HBITMAP) SelectObject(hMemDC, hbit); 
GetDIBColorTable(hMemDC, 0, nColors, rgb); 
for(int iCnt = 0; iCnt < nColors; ++iCnt)
{
info->bmiColors[iCnt].rgbRed = rgb[iCnt].rgbRed;
info->bmiColors[iCnt].rgbGreen = rgb[iCnt].rgbGreen;
info->bmiColors[iCnt].rgbBlue = rgb[iCnt].rgbBlue;
}

SelectObject(hMemDC, hOldBitmap);
DeleteDC(hMemDC);
}
HDC hdc = pDC->GetSafeHdc(); // Getting a safe handle
StretchDIBits(hdc,
initial_pos_x,
initial_pos_y,
size_x,
size_y,
0,
0,
bm.bmWidth,
bm.bmHeight,
bm.bmBits,
info,
DIB_RGB_COLORS,
SRCCOPY);
DeleteObject(hbit);
free(info);

  Вверх
oper54
Дата 29.7.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 13.5.2005

Репутация: нет
Всего: 1



А что это за класс такой CImage?
PM MAIL   Вверх
JoyEx
Дата 30.7.2005, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 5
Всего: 12



Цитата
на
hbit=image;//CImage image

Ничего не получаю на принтере?


А ты сначало "загрузи" .bmp в объект image класса CImage, а потом копируй в hbit описатель HBITMAP из CImage.



--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Leksey
Дата 30.7.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 12.12.2004

Репутация: нет
Всего: 1



Сначала все уже загружено,а CImage это ATL класс для работы с битмапами.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.