Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отображение графики при загрузке формы

408
15 октября 2005 года
Lei fang
265 / / 01.10.2005
Всем привет!

Возникла у меня такая проблема, есть у меня имадж бокс, в котором надо построить график функции.
Я хочу, чтобы при загрузке формы сразу были нарисованы координатные оси и координатная сетка, но на событие form_load это никак не хочет работать.

Private Sub Form_Load()
Picture1.Line (xmin, ymax + ymin)-(xmax, ymax + ymin), vbGreen
Picture1.Line (xmax + xmin, ymax)-(xmax + xmin, ymin), vbGreen
Picture1.BackColor = vbBlack
End Sub

фон становится черным, но оси не рисуются.
Вот, что получается при загрузке


На клик по кнопке у меня тот же код построения осей и сетки, но все работает.

Не обращайте внимания на косую сетку, я над ней пока работаю, но если кто-то подскажет, как можно ее построить (с учетом, что при изменении масштаба она останется неизменной), то я буду очень благодарен.
Но как сделать, чтобы оси и сетка были при загрузке формы?
Всем зарание спасибо.
459
17 октября 2005 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by Lei fang
Всем привет!

Возникла у меня такая проблема, есть у меня имадж бокс, в котором надо построить график функции.
Я хочу, чтобы при загрузке формы сразу были нарисованы координатные оси и координатная сетка, но на событие form_load это никак не хочет работать.

Private Sub Form_Load()
Picture1.Line (xmin, ymax + ymin)-(xmax, ymax + ymin), vbGreen
Picture1.Line (xmax + xmin, ymax)-(xmax + xmin, ymin), vbGreen
Picture1.BackColor = vbBlack
End Sub

фон становится черным, но оси не рисуются.
Вот, что получается при загрузке


На клик по кнопке у меня тот же код построения осей и сетки, но все работает.

Не обращайте внимания на косую сетку, я над ней пока работаю, но если кто-то подскажет, как можно ее построить (с учетом, что при изменении масштаба она останется неизменной), то я буду очень благодарен.
Но как сделать, чтобы оси и сетка были при загрузке формы?
Всем зарание спасибо.


поставь
Picture1.BackColor = vbBlack
перед
Picture1.Line...
А почему не воспользоваться специальным контролом для графиков?

459
17 октября 2005 года
gacol
273 / / 12.02.2003
Пардон!
Это не важно. Главное - поставь перерисовку!
Picture1.AutoRedraw = True
408
17 октября 2005 года
Lei fang
265 / / 01.10.2005
Спасибо, gacol!
С autoredraw теперь работает, хоть и не в моей проге, а просто так:
Private Sub Form_Load()
Picture1.Scale (10, 10)-(-10, -10)
Picture1.AutoRedraw = True
Picture1.BackColor = vbBlack
Picture1.Line (9, 9)-(-9, -9), vbGreen
End Sub

Если я в своей проге ставлю рисование сетки и осей на загрузку, то все равно черный экран получается, ладно попробую разобраться в чем дело.

-->Picture1.Line (xmax + xmin, ymax)-(xmax + xmin, ymin), vbGreen
Picture1.BackColor = vbBlack
Действительно, не заметил я этой последовательности.

-->А почему не воспользоваться специальным контролом для графиков?
Знать бы мне еще, что это такое...:D. Буду рад, если расскажете.

Спасибо за все, gacol!
648
21 октября 2005 года
Tiraspolsky
220 / / 23.07.2003
Цитата:
Originally posted by Lei fang



Все, что тебе надо, зто перенести код из процедуры Load в процедуру Resize.

408
21 октября 2005 года
Lei fang
265 / / 01.10.2005
-->Все, что тебе надо, зто перенести код из процедуры Load в процедуру Resize.
Спасибо Tiraspolsky.
Действительно, работает... Но почему??? Разве ресайз это не изменение размера формы? К тому же у меня фиксированный размер окна и его нельзя разварачивать, растягивать и т.д. Почему генерируется событие ресайз?
648
21 октября 2005 года
Tiraspolsky
220 / / 23.07.2003
Цитата:
Originally posted by Lei fang


При открытии формы события происходят в следующей последовательности:
Initialize
Load
Resize
Paint

Кроме того, Resize имеет место быть, когда пользователь меняет размер формы.
Во время процедуры Load форма еще невидима и поэтому все действия графических операторов пропадают втуне, а во время Resize - видима и действия графических операторов отображаются на экране. Кстати, можно весь код перенести в Paint и тоже будет работать. Возможно, в самом начале надо добавить Cls для очистки изображений.

408
21 октября 2005 года
Lei fang
265 / / 01.10.2005
Спасибо Tiraspolsky, все понятно объяснил.
А вызов функции я лучше оставлю в ресайзе, так прога будет меньше весить, за счет не использовния cls... :D хе хе...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог