Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.253.161] |
|
Сообщ.
#1
,
|
|
|
Есть HBITMAP скажем размером 128х128, нужно разделить его на 4 куска резмера 32х32. На выходе тоже HBITMAPы
|
Сообщ.
#2
,
|
|
|
BitBlt'ом можно копировать кусок DC? Или проблема в чем-то другом?
|
Сообщ.
#3
,
|
|
|
код плиз, что-то не вышло (
Добавлено на выходе повторяю 4 HBITMAP |
Сообщ.
#4
,
|
|
|
покажи код.
|
Сообщ.
#5
,
|
|
|
на вскидку
код не испытывал void SplitBmp(HBITMAP hBitmap,HBITMAP& hBitmapRet1,HBITMAP& hBitmapRet2,HBITMAP& hBitmapRet3,HBITMAP& hBitmapRet4) { //получаем размер битмапа BITMAP bmp; if(::GetObject(hBitmap,sizeof(BITMAP),&bmp)==0) return NULL; HDC hDTDC=::GetDC(NULL); HDC hSrcDC=::CreateCompatibleDC(hDTDC); hBitmap=(HBITMAP)::SelectObject(hSrcDC,hBitmap); HDC hDestDC=::CreateCompatibleDC(hDTDC); hBitmapRet1=::CreateCompatibleBitmap(hDTDC,bmp.bmWidth/2,bmp.bmHeight/2); hBitmapRet1=(HBITMAP)::SelectObject(hDestDC,hBitmapRet1); ::BitBlt(hDestDC,0,0,bmp.bmWidth/2,bmp.bmHeight/2,hSrcDC,0,0,SRCCOPY); hBitmapRet1=(HBITMAP)::SelectObject(hDestDC,hBitmapRet1); hBitmapRet2=::CreateCompatibleBitmap(hDTDC,bmp.bmWidth/2,bmp.bmHeight/2); hBitmapRet2=(HBITMAP)::SelectObject(hDestDC,hBitmapRet2); ::BitBlt(hDestDC,0,0,bmp.bmWidth/2,bmp.bmHeight/2,hSrcDC,bmp.bmWidth/2,0,SRCCOPY); hBitmapRet2=(HBITMAP)::SelectObject(hDestDC,hBitmapRet2); hBitmapRet3=::CreateCompatibleBitmap(hDTDC,bmp.bmWidth/2,bmp.bmHeight/2); hBitmapRet3=(HBITMAP)::SelectObject(hDestDC,hBitmapRet3); ::BitBlt(hDestDC,0,0,bmp.bmWidth/2,bmp.bmHeight/2,hSrcDC,0,bmp.bmHeight/2,SRCCOPY); hBitmapRet3=(HBITMAP)::SelectObject(hDestDC,hBitmapRet3); hBitmapRet4=::CreateCompatibleBitmap(hDTDC,bmp.bmWidth/2,bmp.bmHeight/2); hBitmapRet4=(HBITMAP)::SelectObject(hDestDC,hBitmapRet4); ::BitBlt(hDestDC,0,0,bmp.bmWidth/2,bmp.bmHeight/2,hSrcDC,bmp.bmWidth/2,bmp.bmHeight/2,SRCCOPY); hBitmapRet4=(HBITMAP)::SelectObject(hDestDC,hBitmapRet4); ::SelectObject(hSrcDC,hBitmap); //освобождаем ресурсы ::DeleteDC(hSrcDC); ::DeleteDC(hDestDC); ::ReleaseDC(NULL,hDTDC); } |
Сообщ.
#6
,
|
|
|
я тоже пока не испытывал. Тут есть обстоятельство - битмат - 32 битный с альфа каналом. Загружается вот так.
(HBITMAP)LoadImage( hInstance, MAKEINTRESOURCE( ResourceID ), IMAGE_BITMAP, iWidth, iHeight, LR_CREATEDIBSECTION щас проверю |
Сообщ.
#7
,
|
|
|
Цитата Мальчиш @ GDI вообщето игнорирует альфа канал, и его целостность не гарантируется. Используй GDI+ я тоже пока не испытывал. Тут есть обстоятельство - битмат - 32 битный с альфа каналом. Загружается вот так. |
Сообщ.
#8
,
|
|
|
Повстанець
нормально он отображается, используется своя функция для рендеринга - на ассемблере. Добавлено ElcnU, большое спасибо. |