|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вопрос по работе с BitMap
Здравствуйте. Возникла проблема при работе с типом данных 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.
Пишу программы за еду. __________________ |
#7
|
|||
|
|||
Погуглил на эту тему, но не нашел внятных ответов. Пожалуйста, объясните чуть подробнее, а то я с этим в первые сталкиваюсь
|
#8
|
|||
|
|||
С TControl разобрался. Но никак не пойму, как получить проверить курсор на самой картинке. Получается это сделать только с ее верхним левым углом
|
#9
|
|||
|
|||
А как проверяешь?
|
#10
|
|||
|
|||
В том то и дело, что никак, так как я не знаю, как это сделать
|
#11
|
||||
|
||||
X..X+ABitmap.Width, Y..Y+ABitmap.Height
X, Y - позиция ABitmap Пишу программы за еду. __________________ |