Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OnActivate, почему не отрисовывает картинки? 
:(
    Опции темы
AndreyVN
Дата 9.7.2004, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 25.6.2004
Где: Здесь, в Волгогра де

Репутация: нет
Всего: нет



Привет !

В событии onActivate прописан код, который рисует на канвасе всякую лабуду. Почему-то лабуда появляется только при повторном вызове процедуры. (Когда я закрываю и снова открываю форму.)

Что я не правильнно делаю? Может какой нибудь АпДейт надо добавить?

Всего доброго, Андрей.
PM   Вверх
Олег М
Дата 9.7.2004, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



А что там у тебы вообще делается? покажи код
PM MAIL ICQ   Вверх
AndreyVN
Дата 9.7.2004, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 25.6.2004
Где: Здесь, в Волгогра де

Репутация: нет
Всего: нет



Да он здоровый, масштабирования всякие, а рисовалка - приблизительно такая:

Код
     Image2->Canvas->Brush->Color = clSilver;
     Image2->Canvas->FillRect( Rect(0,0,MaxX,MaxY) );
     Image2->Canvas->Rectangle(0,0,MaxX,0.9*MaxY);
     Image2->Canvas->Pen->Color = clRed;
     Image2->Canvas->MoveTo( 0,MaxY/2 + 0.48*MaxY*sin(0) );
     Image2->Canvas->LineTo(X, Y);

     Image2->Canvas->Pen->Color = clRed;
     Image2->Canvas->MoveTo( X0,Y0 );
     Image2->Canvas->LineTo(X, Y);  
     и т.п.  


Дело в том, что при повторном вызове он работает, я даже OnTimer использовал.


PM   Вверх
Олег М
Дата 9.7.2004, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



А в конце Invalidate делаешь?
PM MAIL ICQ   Вверх
AndreyVN
Дата 9.7.2004, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 25.6.2004
Где: Здесь, в Волгогра де

Репутация: нет
Всего: нет



Не-а, Сейчас попробую, спасибо.

Не помогает !!!

Image2->Invalidate(); Form->Invalidate() тоже.


Причем, на белом квадрате TImage виднеется кусок текста, который я отрисоваваю в коде. Т.е. код отработал точно, но либо кем-то затерся, либо криво обновился.

Ну что делать ?! Может в другое событие засунуть?


Это сообщение отредактировал(а) AndreyVN - 9.7.2004, 16:20
PM   Вверх
<Spawn>
Дата 10.7.2004, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: нет
Всего: 64



AndreyVN Нужно не OnActivate использовать, а OnPaint


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
AndreyVN
Дата 12.7.2004, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 25.6.2004
Где: Здесь, в Волгогра де

Репутация: нет
Всего: нет



Заработало! Спасибо!

Итого: onPaint
рисовать....
Invalidate()
Update()

PM   Вверх
Олег М
Дата 20.7.2004, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



Цитата
Итого: onPaint
рисовать....
Invalidate()
Update()

Стоп, стоп, стоп....
В OnPaint не надо вызывать функции Invalidate и тем более Update.
Invalidate помечает всю область окна как неотрисованную
Update - немедленно перерисовывает окно, т.е. Посылает сообщение WM_PAINT, по которому вызывается функция OnPaint
Кроме того WM_PAINT посылается и так, когда в очереди нет других сообщений
Т.е. Update можно вообще не вызывать
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0963 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.