Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetHBITMAP - чем заменить? "убивает" прозрачность( 
:(
    Опции темы
ASMatic
Дата 27.6.2009, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



решил я тут создать собственный интерфейс....Долго разбирался с тем gdiplus и его методами.
В конечном итоге вывел картинку и принялся за кнопки - и как оказалось что GetHBITMAP не умеет работать с прозрачными изображениями (я использовал png). как вариант на запас - самому вырезать то что надо с бмп - но эт "заплатка" и хотелось бы сделать как положено. Буду очень признателен за ответы!

Код

        case WM_CREATE:
            HBITMAP bmFull;
            MyImg = LoadResources( GetModuleHandle( 0 ), NULL );
            reinterpret_cast<Gdiplus::Bitmap*>(MyImg)->GetHBITMAP(Gdiplus::Color(255,255,255), &bmFrame);
            hdc = GetDC( hWnd );
            hScrDC = CreateCompatibleDC( hdc );
            SelectObject( hScrDC, bmFrame );
            ReleaseDC( hWnd, hdc );
            DeleteObject( bmFrame );


        case WM_PAINT:
                hdc = BeginPaint( hWnd, &ps );
                DrawObjects( hWnd, hScrDC, 0, 0);
                BitBlt( hdc, 0, 0, 400, 500, hScrDC, 0, 0, SRCCOPY );
                EndPaint( hWnd, &ps );

BOOL DrawObjects( HWND hWnd, HDC hScrDC, int xPos, int yPos )
{
    StretchBlt( hScrDC, 360, 5, 25, 25, hScrDC, 400, 0, 25, 25, SRCCOPY );
return TRUE;
}

Image* LoadImageFromResource(UINT res, LPCTSTR pType, HMODULE hInst, Gdiplus::Image **image)
{
    HRSRC hResource = ::FindResource(hInst, MAKEINTRESOURCE(res), pType);
    if (!hResource){
        return false;
    }
    DWORD imageSize = ::SizeofResource(hInst, hResource);
    if (!imageSize)
        return false;
    const void* pResourceData = ::LockResource(::LoadResource(hInst, hResource));
    if (!pResourceData)
        return false;
    HGLOBAL hBuffer  = ::GlobalAlloc(GMEM_MOVEABLE, imageSize);
    if (hBuffer)
    {
        void* pBuffer = ::GlobalLock(hBuffer);
        if (pBuffer)
        {
            CopyMemory(pBuffer, pResourceData, imageSize);
            IStream* pStream = NULL;
            if (::CreateStreamOnHGlobal(hBuffer, FALSE, &pStream) == S_OK)
            {
                (*image) = Gdiplus::Image::FromStream(pStream);
                DWORD dw = GetLastError();
           }
            ::GlobalUnlock(hBuffer);
        }
        ::GlobalFree(hBuffer);
        hBuffer = NULL;
    }
    return *image;
}

Image* LoadResources( HINSTANCE hInstance, LPSTR Name )
{

    Gdiplus::Image* img;
    return LoadImageFromResource( IDB_PNG_BG, _T("PNG") , hInstance, &img);
}


ну вот представил практически весь мой прожект....оч попрошу подсказать что мона поделать!

уже была мысля написать собственный GetHBITMAP - но где мона почитать об этом - пока не нашел. Можетесть варианты и попроще,прошу подсказать и сильно не пинать,если чё упустил.
PM MAIL   Вверх
Andrey44
Дата 30.6.2009, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Цитата(ASMatic @  27.6.2009,  00:41 Найти цитируемый пост)
reinterpret_cast<Gdiplus::Bitmap*>(MyImg)->GetHBITMAP(Gdiplus::Color(255,255,255), &bmFrame);

Прошу объяснить зачем ты используешь GetHBITMAP ?


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
ASMatic
Дата 14.7.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не надеялся на ответ ужеsmile

для того что бы потом сделать SelectObject)) ну и как понимаю после этого в HDC будет прикреплён мой битмап который оно будет прорисовывать)

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


 




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


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

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