Re[6]: Bitmap
От: Pavel Dvorkin Россия  
Дата: 19.03.04 05:44
Оценка: +1
Привет!

GDI wrote:
>
> Hello, Citadel! Вы писали
>
> C> Но это же не изображение. На "стандартные примитивы" и текст-то он
> C> не ругается а вот с растровыми изображениями проблема. Что делать?
>
> Как это??
>
> [ccode]
> CMyWnd::OnPaint()
> {
> CPainDC dc(this);
>
> CDC memDC;
memDC.CreateCompatibleDC(&dc)
> CBitmap memBitmap;
> memBitmap.LoadBitmap(IDB_EOLYPALY);
> CBitmap* pOldBitmap=memDC.SelectObject(&memBitmap);
> dc.BitBlt(0,0,200,200, &memDC, 0,0, SRCCOPY);
> memDC.selectobject(pOldBitmap);
> memDC.DeleteDC();
> }

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.7 "Bedlam"
With best regards
Pavel Dvorkin
Bitmap
От: Citadel  
Дата: 14.03.04 20:00
Оценка:
Почему компилятор ругается на этот код:

...
afx_msg void OnPaint(CDC* pDC);
...
BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
...
void CMainWindow::OnPaint(СDC* pDC)
{
CBitmap bitmap;
CDC dcDisplayMemory;
dcDisplayMemory.CreateCompatibleDC(pDC);
bitmap.LoadBitmap(IDB_BITMAP1);
dcDisplayMemory.SelectObject(&bitmap);
pDC->BitBlt(0,0,50,50,&dcDisplayMemory,50,50,SRCCOPY);
}

Текст ошибки: error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainWindow::* )(CDC *)' to 'void (__thiscall CWnd::* )(void)'

17.03.04 09:25: Перенесено из 'C/C++'
Re: Bitmap
От: Константин http://flint-inc.ru/
Дата: 14.03.04 20:33
Оценка:
Здравствуйте, Citadel, Вы писали:

C>Почему компилятор ругается на этот код:


C>...

C>void CMainWindow::OnPaint(СDC* pDC)
C>...

C>Текст ошибки: error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainWindow::* )(CDC *)' to 'void (__thiscall CWnd::* )(void)'


Насколько я помню, OnPaint() должен быть без параметров. Это в OnDraw есть параметр CDC* pDC.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: Bitmap
От: Citadel  
Дата: 17.03.04 16:47
Оценка:
Здравствуйте, Константин, Вы писали:

К>Здравствуйте, Citadel, Вы писали:


C>>Почему компилятор ругается на этот код:


C>>...

C>>void CMainWindow::OnPaint(СDC* pDC)
C>>...

C>>Текст ошибки: error C2440: 'static_cast' : cannot convert from 'void (__thiscall CMainWindow::* )(CDC *)' to 'void (__thiscall CWnd::* )(void)'


К>Насколько я помню, OnPaint() должен быть без параметров. Это в OnDraw есть параметр CDC* pDC.


А как через OnPaint вывести Bitmap?
Re[3]: Bitmap
От: Константин http://flint-inc.ru/
Дата: 17.03.04 16:53
Оценка:
Здравствуйте, Citadel, Вы писали:

К>>Насколько я помню, OnPaint() должен быть без параметров. Это в OnDraw есть параметр CDC* pDC.


C>А как через OnPaint вывести Bitmap?


void CMyWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
dc.LineTo(100, 100);
}
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[4]: Bitmap
От: Citadel  
Дата: 18.03.04 15:39
Оценка:
Здравствуйте, Константин, Вы писали:

К>Здравствуйте, Citadel, Вы писали:


К>>>Насколько я помню, OnPaint() должен быть без параметров. Это в OnDraw есть параметр CDC* pDC.


C>>А как через OnPaint вывести Bitmap?


К>void CMyWnd::OnPaint()

К>{
К> CPaintDC dc(this); // device context for painting
К> dc.LineTo(100, 100);
К>}

Но это же не изображение. На "стандартные примитивы" и текст-то он не ругается а вот с растровыми изображениями проблема. Что делать?
Re[5]: Bitmap
От: Константин http://flint-inc.ru/
Дата: 18.03.04 15:44
Оценка:
Здравствуйте, Citadel, Вы писали:

C>Но это же не изображение. На "стандартные примитивы" и текст-то он не ругается а вот с растровыми изображениями проблема. Что делать?


Поподробнее можно? Какой код, на что ругается, как именно ругается? Возьми тот же код, что ты приводил в первом посте, и замени там использование pDC на локальную переменную CPaintDC dc(this). Что тогда будет?
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[5]: Bitmap
От: GDI Россия  
Дата: 18.03.04 15:56
Оценка:
Hello, Citadel! Вы писали

C> Но это же не изображение. На "стандартные примитивы" и текст-то он

C> не ругается а вот с растровыми изображениями проблема. Что делать?

Как это??

CMyWnd::OnPaint()
{
    CPainDC dc(this);

    CDC memDC;
    CBitmap memBitmap;
    memBitmap.LoadBitmap(IDB_EOLYPALY);
    CBitmap* pOldBitmap=memDC.SelectObject(&memBitmap);
    dc.BitBlt(0,0,200,200, &memDC, 0,0, SRCCOPY);
    memDC.selectobject(pOldBitmap);
    memDC.DeleteDC();
}


B ult jy heuftncz?
Posted via RSDN NNTP Server 1.8 beta
Re[7]: Bitmap
От: Citadel  
Дата: 19.03.04 16:04
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Привет!


PD>GDI wrote:

>>
>> Hello, Citadel! Вы писали
>>
>> C> Но это же не изображение. На "стандартные примитивы" и текст-то он
>> C> не ругается а вот с растровыми изображениями проблема. Что делать?
>>
>> Как это??
>>
>> [ccode]
>> CMyWnd::OnPaint()
>> {
>> CPainDC dc(this);
>>
>> CDC memDC;
PD> memDC.CreateCompatibleDC(&dc)
>> CBitmap memBitmap;
>> memBitmap.LoadBitmap(IDB_EOLYPALY);
>> CBitmap* pOldBitmap=memDC.SelectObject(&memBitmap);
>> dc.BitBlt(0,0,200,200, &memDC, 0,0, SRCCOPY);
>> memDC.selectobject(pOldBitmap);
>> memDC.DeleteDC();
>> }

PD>--

PD>With best regards,
PD> Pavel Dvorkin

Кажись заработало... Спасибо, народ!
Еще пара вопросов:
1. Как загружать картинку не из ресурсов, а из файла на диске?
2. Для чего писать CBitmap* pOldBitmap=memDC.SelectObject(&memBitmap);, если можно memDC.SelectObject(&memBitmap); Есть какая-нибудь разница?
Re[8]: Bitmap
От: GDI Россия  
Дата: 19.03.04 16:31
Оценка:
Hello, Citadel! Вы писали:
C> Кажись заработало... Спасибо, народ!
C> Еще пара вопросов:
C> 1. Как загружать картинку не из ресурсов, а из файла на диске?
C> 2. Для чего писать CBitmap*
C> pOldBitmap=memDC.SelectObject(&memBitmap);, если можно
C> memDC.SelectObject(&memBitmap); Есть какая-нибудь разница?

pOldBitmap это указатель на "старый" битмап, т.е. который был создан вместе с контектом. Когда ты выбираешь в контекст новый объект, то старый отключается и будет потерян если не сохранить на него указатель. В результате получится утечка памяти, что тебе и было нужно!
А как загружать картинку из файла, уже 10000000000000 раз обсуждалось.... наверное... может быть... когда-то... где-то... для чего-то... у кого-то... зачем-то.... .
Posted via RSDN NNTP Server 1.8 beta
Re: Bitmap
От: Citadel  
Дата: 20.03.04 15:00
Оценка:
Дубль 2...

Как вывести 2 или более bitmap'ов?
Писал вот такой код:


void CMainWindow::OnPaint()
{
    CPaintDC dc(this);
    CDC memDC;
    memDC.CreateCompatibleDC(&dc);
    CBitmap memBitmap;

    memBitmap.LoadBitmap(IDB_BACKGROUND);
    CBitmap* pOldBitmap = memDC.SelectObject(&memBitmap);
    dc.BitBlt(0,0,700,492,&memDC,0,0,SRCCOPY);
    memBitmap.DeleteObject();

    memBitmap.LoadBitmap(IDB_CELLS);
    pOldBitmap = memDC.SelectObject(&memBitmap);
    dc.BitBlt(20,20,500,500,&memDC,0,0,SRCCOPY);
    memBitmap.DeleteObject();

    memDC.SelectObject(pOldBitmap);
    memDC.DeleteDC();
}



Он рисует старый битмап в новых координатах. Что тут неверно?
Заранее спасибо!
Re[2]: Bitmap
От: Citadel  
Дата: 21.03.04 12:16
Оценка:
А... пардон, не с кодом проблема
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.