Отображение графики при загрузке формы
Возникла у меня такая проблема, есть у меня имадж бокс, в котором надо построить график функции.
Я хочу, чтобы при загрузке формы сразу были нарисованы координатные оси и координатная сетка, но на событие 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
фон становится черным, но оси не рисуются.
Вот, что получается при загрузке
На клик по кнопке у меня тот же код построения осей и сетки, но все работает.
Не обращайте внимания на косую сетку, я над ней пока работаю, но если кто-то подскажет, как можно ее построить (с учетом, что при изменении масштаба она останется неизменной), то я буду очень благодарен.
Но как сделать, чтобы оси и сетка были при загрузке формы?
Всем зарание спасибо.
Цитата:
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
фон становится черным, но оси не рисуются.
Вот, что получается при загрузке
На клик по кнопке у меня тот же код построения осей и сетки, но все работает.
Не обращайте внимания на косую сетку, я над ней пока работаю, но если кто-то подскажет, как можно ее построить (с учетом, что при изменении масштаба она останется неизменной), то я буду очень благодарен.
Но как сделать, чтобы оси и сетка были при загрузке формы?
Всем зарание спасибо.
Всем привет!
Возникла у меня такая проблема, есть у меня имадж бокс, в котором надо построить график функции.
Я хочу, чтобы при загрузке формы сразу были нарисованы координатные оси и координатная сетка, но на событие 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...
А почему не воспользоваться специальным контролом для графиков?
Это не важно. Главное - поставь перерисовку!
Picture1.AutoRedraw = True
С 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!
Цитата:
Originally posted by Lei fang
Все, что тебе надо, зто перенести код из процедуры Load в процедуру Resize.
Спасибо Tiraspolsky.
Действительно, работает... Но почему??? Разве ресайз это не изменение размера формы? К тому же у меня фиксированный размер окна и его нельзя разварачивать, растягивать и т.д. Почему генерируется событие ресайз?
Цитата:
Originally posted by Lei fang
При открытии формы события происходят в следующей последовательности:
Initialize
Load
Resize
Paint
Кроме того, Resize имеет место быть, когда пользователь меняет размер формы.
Во время процедуры Load форма еще невидима и поэтому все действия графических операторов пропадают втуне, а во время Resize - видима и действия графических операторов отображаются на экране. Кстати, можно весь код перенести в Paint и тоже будет работать. Возможно, в самом начале надо добавить Cls для очистки изображений.
А вызов функции я лучше оставлю в ресайзе, так прога будет меньше весить, за счет не использовния cls... :D хе хе...