Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Re: Вывод графики в Visual C++

Добрый день, Андрей.

ресурса,

Посмотри методы Invalidate() по всем событиям и замени на
Invalidate(FALSE). У меня тоже было мигание - теперь нет совсем.

Рисуй не в том CDC, который ты получил в обработчике
OnDraw, а создай совместимый CDC в памяти, и рисуй в него. А потом (в
конце метода OnDraw) одной командой скопируешь содержимое контекста в
памяти в тот CDC, который получил в OnDraw.
Поясняю:
OnDraw(CDC* pDC)
{
CRect wRect;
GetClientRect( &wRect );

CDC memDC; // контекст в памяти
if( !memDC.CreateCompatibleDC( pDC ) || memDC.GetSafeHdc() == NULL )
{
TRACE("can't create DC\n");
return;
}

CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC, wRect.Width(), wRect.Height());

CBitmap* oldbmp = memDC.SelectObject(&bmp);

// на всяний случай сотрем все сами
COLORREF bkcolor = ::GetSysColor( COLOR_BTNFACE );
memDC.FillSolidRect( wRect, bkcolor ); // RGB( 192, 192, 192 )

// здесь рисуем все, что нужно (в контекст в памяти)
mamDC.MoveTo(0,0);
memDC.LineTo( 100,100 );
memDC.Draw3dRect( wRect, RGB(255,255,255), RGB(0,0,0) );

// скопировать из контекста в памяти в отображаемый
pDC->BitBlt( 0, 0, wRect.Width(), wRect.Height(), &memDC, 0, 0,
SRCCOPY );

// очистить
memDC.SelectObject(oldbmp);
bmp.DeleteObject();
memDC.DeleteDC();

}

При такой реализации можно рисовать много объектов - замедления не
будет. Мне приходилось выполнять сложные графические операции таким
способом - жалоб нет.

С уважением, Николай
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Thu, 25 Dec 2003 09:52:12 +0300 (#41847)