Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.01.2015, 06:34
fn12gl34 fn12gl34 вне форума
Прохожий
 
Регистрация: 09.01.2015
Сообщения: 30
Версия Delphi: 10
Репутация: 10
По умолчанию Вопрос по работе с BitMap

Здравствуйте. Возникла проблема при работе с типом данных Tbitmap.
Я не знаю в чем проблема, но у меня выводит графику только в процедуре FormPaint. То есть я например Не могу перерисовать фигуру в процедуре OnClick или FormCreate
Ответить с цитированием
  #2  
Старый 09.01.2015, 08:46
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

в OnCreate нет смысла рисовать, а в OnClick еще можно, но когда-нибудь нарисованое все-равно пропадет проблема в том, что Windows перерисовывает контекст когда потребуется: окно создалось/развернулось/переместилось/изменило размеры и т.д. ей не интересно что до этого на нем кто-то что-то нарисовал. чтобы восстановить былую красоту должен позаботиться создатель. для этого ему предоставляется сообщение WM_PAINT (событие OnPaint).
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 09.01.2015, 08:51
fn12gl34 fn12gl34 вне форума
Прохожий
 
Регистрация: 09.01.2015
Сообщения: 30
Версия Delphi: 10
Репутация: 10
По умолчанию

Да нет, окно имеет фиксированный размер и позицию, так что перерисовывать не придется. В процедуре OnCreate не происходит вообще ничего, ни ошибки, ни прорисовки. С абсолютно с тем же кодом в процедуре Onpaint все рисуется нормально. В этом и загвоздка, что мне нужно вывести пару изображений сразу при загрузке программы.
Ответить с цитированием
  #4  
Старый 09.01.2015, 09:13
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

перерисовывать еще как придется. в OnCreate форма только создана, поэтому рисовать на ней нет смысла - когда она будет показана все нарисованное будет стерто и придется рисовать заново. когда форма будет перекрыта другим окном опять же придется рисовать заново. можно, конечно, рисовать на TImage. он как раз помнит что на нем рисуют.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 10.01.2015, 23:27
fn12gl34 fn12gl34 вне форума
Прохожий
 
Регистрация: 09.01.2015
Сообщения: 30
Версия Delphi: 10
Репутация: 10
По умолчанию

Большое спасибо, переписал код-получилось. Теперь назрел еще вопрос. Нужно в процедуре onmousemove сделать так, чтобы при наведении на изображение что-то происходило. Проблема в том, что я смог это сделать только на верхний левый угол изображения, а не на него все. Вот в этом мне нужен совет. Заранее благодарен
Ответить с цитированием
  #6  
Старый 11.01.2015, 11:03
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

позиция и размеры изображения известны же. по ним и проверяй попал курсор на картинку или нет. у TControl есть события CM_MOUSEENTER и CM_MOUSELEAVE.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 11.01.2015, 17:17
fn12gl34 fn12gl34 вне форума
Прохожий
 
Регистрация: 09.01.2015
Сообщения: 30
Версия Delphi: 10
Репутация: 10
По умолчанию

Погуглил на эту тему, но не нашел внятных ответов. Пожалуйста, объясните чуть подробнее, а то я с этим в первые сталкиваюсь
Ответить с цитированием
  #8  
Старый 12.01.2015, 09:25
fn12gl34 fn12gl34 вне форума
Прохожий
 
Регистрация: 09.01.2015
Сообщения: 30
Версия Delphi: 10
Репутация: 10
По умолчанию

С TControl разобрался. Но никак не пойму, как получить проверить курсор на самой картинке. Получается это сделать только с ее верхним левым углом
Ответить с цитированием
  #9  
Старый 12.01.2015, 14:58
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

А как проверяешь?
Ответить с цитированием
  #10  
Старый 12.01.2015, 17:14
fn12gl34 fn12gl34 вне форума
Прохожий
 
Регистрация: 09.01.2015
Сообщения: 30
Версия Delphi: 10
Репутация: 10
По умолчанию

В том то и дело, что никак, так как я не знаю, как это сделать
Ответить с цитированием
  #11  
Старый 12.01.2015, 18:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

X..X+ABitmap.Width, Y..Y+ABitmap.Height
X, Y - позиция ABitmap
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter