![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| coop |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.7.2011 Репутация: нет Всего: нет |
Задачка написать функцию для сравниванию 2 битмапов. Функция принимает хендл окна игры в оконном режиме с которого нужно взять битмап и строку - имя файла второго битмапа. Открыть битмап из файла и записать его в буфер у меня выходит , но с битмапом окна ничего не получается . Помогите пожалуйста правильно взять битмап.
Это сообщение отредактировал(а) coop - 9.7.2011, 13:29 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
CreateCompatibleDC создает новое устройство, так что в hbitmap никогда не будет растра из hWnd,
но если вместо wnddc подставить dc, может что и получится ) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| bass |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: 2 Всего: 2 |
битмап с файла на окно
void DrawBitmap(HWND ok,char* file ,int xStart, int yStart) { RECT rcSrc; GetWindowRect(ok, &rcSrc); HBITMAP hBitmap =LoadImage(NULL,file,IMAGE_BITMAP,rcSrc.right - rcSrc.left,rcSrc.bottom - rcSrc.top,LR_LOADFROMFILE); HDC hdc = GetDC(ok); BITMAP bm; HDC hdcMem; DWORD dwSize; POINT ptSize, ptOrg; hdcMem = CreateCompatibleDC(hdc); SelectObject(hdcMem, hBitmap); SetMapMode(hdcMem, GetMapMode(hdc)); GetObject(hBitmap, sizeof(BITMAP),(LPVOID) &bm); ptSize.x = bm.bmWidth; ptSize.y = bm.bmHeight; DPtoLP(hdc, &ptSize, 1); ptOrg.x = 0; ptOrg.y = 0; DPtoLP(hdcMem, &ptOrg, 1); BitBlt(hdc, xStart, yStart, ptSize.x, ptSize.y,hdcMem, ptOrg.x, ptOrg.y, SRCCOPY); DeleteDC(hdcMem); DeleteObject (hBitmap); DeleteDC(hdc); } а вот сохранить в файл TJPEGImage *jp = new TJPEGImage(); unsigned DataHandle; HPALETTE APalette; Word Format; Graphics::TBitmap *Bitmap=new Graphics::TBitmap; HDC DC=GetDC(0);//вот здесь надо дс окна а не рабочего стола try{ Bitmap->Height=Screen->Height; Bitmap->Width=Screen->Width; BitBlt(Bitmap->Canvas->Handle , 0, 0, Screen->Width, Screen->Height,DC, 0, 0, SRCCOPY); jp->Assign(Bitmap); Я думаю разберешься jp->SaveToFile("1.jpg"); |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |