Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2012, 09:09   #1
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию Изменить размер картинки в 4 раза

Нужно сделать скрин с окна, определенного размера (например 1280 на 960). Затем эту картинку уменьшить в 4 раза (в два раза уменьшить ширину и высоту) и сохранить на диск. Могу сделать директиксом либо апи.
Код:
GetWindowRect(VWISYSAPPLICATION->hWnd, &r);
thmr.left = r.left;
thmr.top = r.top;
thmr.right = r.left + 6 + 640;
thmr.bottom = r.top + 6 + 26 + 480;
hr = pD3DDevice->CreateOffscreenPlainSurface(pModeInfo->Width, pModeInfo->Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &shot_surface, NULL);
hr = pD3DDevice->StretchRect(shot_surface, &r, thmb, &thmr, D3DTEXF_LINEAR);
hr = D3DXSaveSurfaceToFile(strMsg,D3DXIFF_BMP,shot_surface,NULL,&thmr);
Код:
RECT windowRect;
GetWindowRect(hWnd, &windowRect);

int bitmap_dx = windowRect.right-windowRect.left;
int bitmap_dy = windowRect.bottom-windowRect.top;

HDC winDC = GetWindowDC(hWnd);
HDC bmpDC = CreateCompatibleDC(winDC);
    
bitMap = CreateDIBSection(GetWindowDC(hWnd), &bitMapInfo, DIB_RGB_COLORS, (void**)&memory, NULL, 0);
SelectObject(bmpDC, bitMap);
BitBlt(bmpDC, 0, 0, bitmap_dx, bitmap_dy, winDC, 0, 0, SRCCOPY);
ReleaseDC(hWnd, winDC);
DeleteDC(bmpDC);
но в первом случае картинка обрезается (берется левый верхний угол), а во втором вообще не знаю как сделать..

Последний раз редактировалось Kukurudza; 01.08.2012 в 09:12.
Kukurudza вне форума Ответить с цитированием
Старый 01.08.2012, 09:20   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

во втором не BitBlt, а StretchBlt.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить размер иконок amator_roma Компоненты Delphi 4 13.01.2011 11:28
Изменить размер иконки KoBRaAndrey Общие вопросы Delphi 1 03.07.2010 16:03
узнать размер картинки cooperOk JavaScript, Ajax 6 15.11.2009 15:36
Изменить размер формы Dr.Badnezz Общие вопросы Delphi 1 28.01.2009 20:51
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54