Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > перерисовка экрана?(


Автор: KIDD 25.3.2004, 23:45
Товарищи помогите!
Как сделать перерисовку экрана, после того как ты его подвигал, свернул...,если у меня на нем нарисован некий график(по-сути, картинка, рисованная самостоятельно кодом (Moveto,Lineto).
Изначальную картинку(голый график-оси координат), я запихнул перерисовываться в OnDraw, но вот ,проблема, я по ходу программы рисую мышкой точки и линии.
Как все это запихнуть в какой-нибудь буфер, и как картинку потом перерисовывать(пересохранять в буфер,чтобы потом при необходимости перерисовать) после каждой новой редакции(добавление точек, линий (только добавление!!!))

Заранее спасибо!


Автор: Stalk 26.3.2004, 00:33
Ну сделай массив, в который будешь запихивать все новые точки, а в ОнДрове Будешь их вспоминать и перерисовывать. Я так понял это мфсишный проект с док/вью структурой? Тогда:
Код

//yourprogramView.h
...
public:
...
  POINT points[500];//сделай размер, так чтобы точно хватило на все точки графика
  int ammount;//надо помнить сколько там точек
...

//yourprogramView.cpp
...
yourprogramView::yourprogramView()
{
  ammount=0;
}
...
void yourprogramView::OnDraw(CDC*pdc)
{
...
  for(int i=0;i<ammount-1;i++){//Если точки соединять линиями, то надо быть уверенным что задано хотя бы две точки
     pdc->MoveTo(points[i]);
     pdc->LineTo(points[i+1]);
  }
...
}
...
void yourprogramView::LButtonDown(UINT nFlags, CPoint point)
{
  points[ammount++]=point;
  Invalidate();
}
...

Автор: NT 26.3.2004, 02:28
Во, во Invalidate() их всех!

Автор: Guest 27.3.2004, 21:14
а если хошь мож Свой СиДиСи завести и сохранять туда изображение окна...а потом востанавливать назад hehe.gif

Автор: Stalk 27.3.2004, 23:20
Можно, но так уйдет больше памяти.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)