Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с изображением .bmp

20K
09 мая 2007 года
4elove4ek
8 / / 14.11.2006
Как можно открыть изображение и вывести его на экран?
Подсказали что с помощью класса CBitmap
CBitmap mypic;
mypic.LoadBitmap("C:\\1.bmp");
.... а дальше как вывести?
320
09 мая 2007 года
m_Valery
1.0K / / 08.01.2007
Для диалога
1.Импортируешь в ресурсы bitmap.
2.Добавляешь в класс диалога переменную CBitmap b;
3.В ф-ии OnInitDialog загружаешь
 
Код:
...
b.LoadBitmap(IDB_BITMAP1);
...

4.В ф-ии OnPaint дописываешь
Код:
...
else
    {
        CDC *pDC = GetDC();
        CDC MemDC;
        MemDC.CreateCompatibleDC(pDC);
        CBitmap* pOldBitmap = MemDC.SelectObject(&b);
        BITMAP bm;
        b.GetObject(sizeof(BITMAP),&bm);
        pDC->BitBlt(10,10,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);
       CDialog::OnPaint();
    }
...

Для однодокументного приложения
1.Добавляешь в класс вида(View) переменную CBitmap b;
2.В ф-ии OnDraw(CDC* pDC) дописываешь
 
Код:
...
            b.LoadBitmap(IDB_BITMAP1);
    CDC MemDC;
    MemDC.CreateCompatibleDC(pDC);
    CBitmap* pOldBitmap = MemDC.SelectObject(&b);
    BITMAP bm;
    b.GetObject(sizeof(BITMAP),&bm);
    pDC->BitBlt(10,10,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);
...
20K
09 мая 2007 года
4elove4ek
8 / / 14.11.2006
Я всего неделю в вижуале сижу и поэтому многое не знаю.
У меня нету класса View как и OnDraw функции. Её надо перегружать?
Если не тяжело можно ещё чуток подробнее.
У меня цель - чтобы кликая на экране в точку туда загружался рисунок ..
320
09 мая 2007 года
m_Valery
1.0K / / 08.01.2007
Какой проект ? MFC Application ?
20K
09 мая 2007 года
4elove4ek
8 / / 14.11.2006
Неа. Просто Win32 Application...
320
09 мая 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: 4elove4ek
...
У меня цель - чтобы кликая на экране в точку туда загружался рисунок ..


Может эту задачу лучше спрашивать в ветке Win32 API.Могу в общем случае рассказать,как загрузить рисунок.
1.Добавляешь переменную HBITMAP b; это там где Global Variables:
2.В ф-ии _tWinMain допиши после LoadString...перед MyRegisterClass(hInstance);

 
Код:
...
 b = (HBITMAP)::LoadImage(hInstance,
      MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP,
      0, 0, LR_DEFAULTCOLOR);
...

3.В ф-ии WndProc добавь переменную HDC hdcBits; перед switch,далее
case WM_PAINT: выглядит так
 
Код:
...
                           hdc = BeginPaint(hWnd, &ps);
        // TODO: Add any drawing code here...
        hdcBits=::CreateCompatibleDC(hdc);
        SelectObject(hdcBits, b);
        BitBlt(hdc, 0, 0, 200, 200, hdcBits, 0, 0, SRCCOPY);
        DeleteDC(hdcBits);
        EndPaint(hWnd, &ps);
        break;
...

Рисунок надо импортровать в ресурсы.
20K
09 мая 2007 года
4elove4ek
8 / / 14.11.2006
Спасибо за подробное описание. Но у меня вообще этого нет.
Я пишу в Visual C++ 6, создаю проект так: http://www.firststeps.ru/mfc/steps/r.php?1 . Выбирая Win32 Application.
И у меня нет функции WndProc...
Заранее спасибо..
20K
13 мая 2007 года
4elove4ek
8 / / 14.11.2006
Всё! Я понял как вставлять битовые изображения.

У меня один вопрос остался:
как контролировать нажатие нескольких клавиш?
МЫ используем для контроля например персонажа в игре 4 клавиши, но т.к. можно зажать одновременно две, то добавляется ещё 4 направления движения. Подскажите как это сделать...
20K
14 мая 2007 года
4elove4ek
8 / / 14.11.2006
И когда я обновляю экран ( я это делаю 25 раз в секунду ) то он нейвероятно сильно мерцает!!! Можно как-то избавится от мерцания?
9.2K
20 мая 2007 года
llllDeadMan
32 / / 28.11.2005
1. Чаще обновлять;
2. Отрисовывать сначала все в памяти, а потом выводить на экран.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог