![]() |
|
|
![]()
|
|
| EEEEEE |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 15.5.2006 Репутация: нет Всего: нет |
Добрый всем! Проблемка в том, что форма содержит кнопку. При нажатии на кнопку на Panel выводится средствами WinAPI различная графика( окружности, линии). При перерисовке формы всё что было на Panel исчезает. Image не подойдёт. Что необходимо добавить для сохранения информации, выведенной на Panel? |
|||
|
||||
| Comm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 31.8.2007 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
Думаю нужно после отрисовки на TPanel (линий квадратиков) сохранить контекст в динамической переменной ,отловить сообщение перерисовки компонента TPanel и в обработчике этого события прорисовывать заново из сохраненного контекста=)
Покажи код отрисовки Это сообщение отредактировал(а) Comm - 26.1.2009, 23:30 -------------------- =))))) ![]() |
|||
|
||||
| EEEEEE |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 15.5.2006 Репутация: нет Всего: нет |
На чистом WinAPI вся хитрость зашита в сообщениях WM_CREATE & WM_PAINT.
А здесь, явно чего-то нехватает? Вот только чего? Начальную инициализацию можно "убрать" в коструктор формы или FormCreate. Отрисовка должна происходить по нажатию кнопки и в дальнейшем не затираться.
|
|||
|
||||
| sergey_85 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: 1 Всего: 1 |
Тебе нужно отловить сообщение панели WM_PAINT, затем нарисовать сначала саму панель, а затем то, что ты хочешь.
Вот примерный код Отрисовка
... и не забудь
Это сообщение отредактировал(а) sergey_85 - 27.1.2009, 13:38 -------------------- A good design always pays off. |
||||
|
|||||
| Comm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 31.8.2007 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
Классный пример!
-------------------- =))))) ![]() |
|||
|
||||
| Comm |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 31.8.2007 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
а красивее помоему так:
-------------------- =))))) ![]() |
||||
|
|||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
а почемубы на TPanel не положить PaintBox и в нем уже рисовать в методе OnPaint ?????????????
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Comm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 31.8.2007 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
Тоже вариант
-------------------- =))))) ![]() |
|||
|
||||
| EEEEEE |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 15.5.2006 Репутация: нет Всего: нет |
Всем спасибо!!!
Из-за чего хотелось бы "сесть" на Panel? Из-за того, что начало системы координат нужно перегнать в центр. X и Y изменяются от минуса до плюса. Карячится каждый раз с пересчётом не очень то. |
|||
|
||||
| sergey_85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: 1 Всего: 1 |
Comm,
используя TCanvas, мне кажется будет проще и заморочек с WinAPI меньше - отсюда и задачу сделаешь быстрее, хотя есть много вещей которые через канву не сделаешь. -------------------- A good design always pays off. |
|||
|
||||
| Comm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 31.8.2007 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
Согласен,но я пытаюсь избегать где только можно оператора new =)) -------------------- =))))) ![]() |
|||
|
||||
| sergey_85 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: 1 Всего: 1 |
Comm,
да не надо его бояться! без него, к примеру, vcl компоненты НИКАК не создать (тот же TButton, к примеру)!!! Просто например всегда делай так:
Это сообщение отредактировал(а) sergey_85 - 27.1.2009, 22:56 -------------------- A good design always pays off. |
||||
|
|||||
| Comm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 269 Регистрация: 31.8.2007 Где: Санкт-Петербург Репутация: 2 Всего: 1 |
Это я знаю,я к тому что если можно обойтись без new то зачем нагружать программу( на выделение памяти ведь требуются ресурсы и время)
-------------------- =))))) ![]() |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |