![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте. Возникла проблема при работе с типом данных Tbitmap.
Я не знаю в чем проблема, но у меня выводит графику только в процедуре FormPaint. То есть я например Не могу перерисовать фигуру в процедуре OnClick или FormCreate |
|
#2
|
||||
|
||||
|
в OnCreate нет смысла рисовать, а в OnClick еще можно, но когда-нибудь нарисованое все-равно пропадет
проблема в том, что Windows перерисовывает контекст когда потребуется: окно создалось/развернулось/переместилось/изменило размеры и т.д. ей не интересно что до этого на нем кто-то что-то нарисовал. чтобы восстановить былую красоту должен позаботиться создатель. для этого ему предоставляется сообщение WM_PAINT (событие OnPaint). |
|
#3
|
|||
|
|||
|
Да нет, окно имеет фиксированный размер и позицию, так что перерисовывать не придется. В процедуре OnCreate не происходит вообще ничего, ни ошибки, ни прорисовки. С абсолютно с тем же кодом в процедуре Onpaint все рисуется нормально. В этом и загвоздка, что мне нужно вывести пару изображений сразу при загрузке программы.
|
|
#4
|
||||
|
||||
|
перерисовывать еще как придется. в OnCreate форма только создана, поэтому рисовать на ней нет смысла - когда она будет показана все нарисованное будет стерто и придется рисовать заново. когда форма будет перекрыта другим окном опять же придется рисовать заново. можно, конечно, рисовать на TImage. он как раз помнит что на нем рисуют.
|
|
#5
|
|||
|
|||
|
Большое спасибо, переписал код-получилось. Теперь назрел еще вопрос. Нужно в процедуре onmousemove сделать так, чтобы при наведении на изображение что-то происходило. Проблема в том, что я смог это сделать только на верхний левый угол изображения, а не на него все. Вот в этом мне нужен совет. Заранее благодарен
|
|
#6
|
||||
|
||||
|
позиция и размеры изображения известны же. по ним и проверяй попал курсор на картинку или нет. у TControl есть события CM_MOUSEENTER и CM_MOUSELEAVE.
|