Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нарисовать CBitmap на CDC 
:(
    Опции темы
_hunter
  Дата 1.12.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Добрый день.

Пытаюсь нарисовать CBitmap на CDC:
(_cornerTL -- CBitmap)
Код

    if (_cornerTL.m_hObject)
    {
        HDC compatibleDC = CreateCompatibleDC(dc->m_hDC);
        if (compatibleDC)
        {
            HGDIOBJ oldBitmap = SelectObject(compatibleDC, _cornerTL.m_hObject);
            if (oldBitmap) 
            {
                BOOL result = TransparentBlt(
                    dc->m_hDC,
                    _mainRect.left,
                    _mainRect.top,
                    _cornerTL.GetBitmapDimension().cx,
                    _cornerTL.GetBitmapDimension().cy,
                    compatibleDC,
                    0,
                    0,
                    _cornerTL.GetBitmapDimension().cx,
                    _cornerTL.GetBitmapDimension().cy,
                    RGB(0, 0, 0)
                    );

                if (result == FALSE)
                {
                    DWORD error = GetLastError();

и получаю result == FALSE и error == 0 (и естественно ничего не рисуется).

Что я делаю не так/как это править?

С уважением...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
The Thing
Дата 2.12.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попробуй создать CompatibleBitmap

Код

    if (_cornerTL.m_hObject)
    {
        HDC compatibleDC = CreateCompatibleDC(dc->m_hDC);
        HBITMAP hBitmap = (HBITMAP)CreateCompatibleBitmap(dc->m_hDC, LENGTH, HEIGHT);
        SelectObject(compatibleDC, hBitmap);

        if (compatibleDC)
        {
            HGDIOBJ oldBitmap = SelectObject(compatibleDC, _cornerTL.m_hObject);
            if (oldBitmap) 
            {
                BOOL result = TransparentBlt(
                    dc->m_hDC,
                    _mainRect.left,
                    _mainRect.top,
                    _cornerTL.GetBitmapDimension().cx,
                    _cornerTL.GetBitmapDimension().cy,
                    compatibleDC,
                    0,
                    0,
                    _cornerTL.GetBitmapDimension().cx,
                    _cornerTL.GetBitmapDimension().cy,
                    RGB(0, 0, 0)
                    );

                if (result == FALSE)
                {
                    DWORD error = GetLastError();
                }


Не забудь в конце сделать DeleteObject(hBitmap); и DeleteDC(compatibleDC );

Это сообщение отредактировал(а) The Thing - 2.12.2006, 13:16


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


 




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


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

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