Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Canvas не обновляется... [D7, Win2k]


3APA3A ©   (2004-11-04 18:03:00) 

for i:= 0 to Length(MyArray) - 1 do
   Canvas.Pixels[MyArray[i].X, MyArray[i].Y] := clRed;

 координаты в MyArray постоянно изменяются. Также добавляются   новые элементы. И цикл этот крутится все время работы программы.
 Но выводится только первая точка. Остальные - нет.
 Причем, если после цикла добавить ShowMessage('') и сидеть, и постоянно давить на Enter - все прекрасно рисуется...  В чем проблема?


3APA3A   (2004-11-04 23:10:00) [1]

Ой блин...Разобрался... Дело на самом деле не в Canvas'е было...
Извините...


3APA3A   (2004-11-04 22:42:00) [2]

Нет, проблема не в массиве. Т.к. сказал же - если после цикла дописать ShowMessage() и постоянно давить enter - все рисуется...
 Какие еще варианты?


Rem   (2004-11-04 18:34:00) [3]

icWasya ©   (04.11.04 18:29) [6]

С каких это пор Pixels работает через PostMessage?


icWasya   (2004-11-04 18:29:00) [4]

А если после цикла добавить Application.ProcessMessages; ???


Rem   (2004-11-04 18:23:00) [5]

Скорее всего, проблема в MyArray[].
Вы уверены, что координаты из MyArray попадают в область отображения? Или что элементы массива отличаются друг от друга? Или что размер массива задан правильно?


Anton_K   (2004-11-04 18:22:00) [6]

А может у вас в MyArray одни и те же координаты?


3APA3A   (2004-11-04 18:14:00) [7]

Это ничего не меняет. Пробовал. Все равно только одна рисуется.


Prohodil Mimo   (2004-11-04 18:09:00) [8]

Prohodil Mimo ©   (04.11.04 18:08) [1]
хотя лажа получица :о)
надо по другому


Prohodil Mimo   (2004-11-04 18:08:00) [9]

как один из вариантов:

for i:= 0 to Length(MyArray) - 1 do
begin
  Canvas.Pixels[MyArray[i].X, MyArray[i].Y] := clRed;
  paint;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо