редактор изображения (мерциние)
От: Sazon  
Дата: 27.03.14 12:22
Оценка:
Здравствуйте. Есть MDI-приложение для визуализации космических снимков. Нужно написать редактор, который позволяет рисовать на снимках какие-нибудь полигоны, ломаные линии и точки, а затем все это сохранять в shape файл. Все написал, кроме нормальной визуализации геометрических объектов: происходит нестабильное мерцание в процессе рисовании линий. Сам редактор выполнен в виде класса наследника от Cwnd (как тут ,пример, http://www.codeproject.com/Articles/6607/CDiagramEditor-DIY-vector-and-dialog-editor) и используется как дочернее окно вида, который содержим сам снимок.

Вот как выглядит обработчик:

void CWindowImageEditor::OnPaint() //CWindowImageEditor — класс редактора
{
// TODO: add draw code for native data here
CPaintDC pDC(this);
CRect viewRect;
GetWindowRect(viewRect);
CDC memDC;
memDC.CreateCompatibleDC(&pDC);
CBitmap* oldBmp = memDC.SelectObject(m_viewBitmap); //m_viewBitmap — bitmap вида, обновляется в CView::OnDraw() при изменении снимка (увеличение, уменьшение, скроллирование и т.д)
pDC.BitBlt(0, 0, viewRect.Width(), viewRect.Height(), &memDC, 0, 0, SRCCOPY);
m_objectContainer.DrawObjects(); //рисование самих линий в контекст (pDC->MoveTo...pDC->Line)
memDC.SelectObject(oldBmp);//по идее не обязательно
}

Пробовал с CMemDC, ничего не получилось. Причем запускал редактор на двух машинах, на одной не мерцало.

Заранее благодарен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.