![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 03.06.2009
Сообщений: 2
|
![]()
Я делаю курсовик,японский сканворд. Препод поставил условие,чтобы сделать его обязательно на PaintBox! а у данного компонента есть такое "хорошее" свойство стирать участок рисунка,которые были перекрыты др окном...onPaint не помогает,так мне надо постоянно поверх нарисованного пририсовывать еще,а при использовании Repaint (и Refresh) все,что было нарисовано, стирается...рисуется только то,что должно рисоваться в данный момент...хотела через onPaint и Bitmap,но ,не смотря на то,что я в OnPaint прописываю - PaintBox.Canvas.Draw(0,0,Bitmap); при перекрывании все стирается (хотя книги доказывают обратное!авторов на мыло!!!!)...умные люди,помогите пожалуйста..
Скажите,как можно определить,активна ли форма в данный момент или перекрыта другим окном?если еть вариант как рисовать в onPaint так,чтобы рисовалось поверх имеющегося, и копировать изображение из Bitmap на PaintBox (кстати с CopyRect ситуация та же), подскажите... ![]() |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
![]()
В силу особенностей графической системы Windows рисовать надо ВСЕ изображение. Полностью. Не делить его на ту часть, которая уже нарисована и ту часть, которую нужно дорисовывать.
Это позволит избежать упомянутой проблемы (если я ее правильно понял). Естественно, что рисовать надо на Bitmap и выводить на PaintBox методами Draw или CopyRect. Можете выложить исходники программы? |
![]() |
![]() |
![]() |
#3 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Вам тут нужно уяснить две вещи.
1) Событие PaintBox.OnPaint срабатывает тогда, когда необходима перерисовка по какой либо причине. В его обработчике у вас должна быть строка PaintBox.Canvas.Draw(0,0,Bitmap); Это событие инициирует система. 2) Когда вам нужно обновить изображение то в нужном месте поместите все ту же строку PaintBox.Canvas.Draw(0,0,Bitmap); ествественно в битмапе перед этим должны произойти изменения иначе ничего нового вы на экране не увидите.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 03.06.2009 в 12:38. |
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 03.06.2009
Сообщений: 2
|
![]()
Я сама разобралась с проблемой
![]() ![]() написала |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое создание paintbox-a. | blackstersl | Общие вопросы Delphi | 1 | 12.05.2009 19:17 |
Из listBox в paintbox в Билдере | slonik123 | Общие вопросы C/C++ | 0 | 09.03.2009 15:12 |
Paintbox | lacost | Мультимедиа в Delphi | 3 | 14.01.2009 09:53 |
Подлый PaintBox | Fre5h | Компоненты Delphi | 2 | 09.11.2008 22:52 |
paintbox | steck | Общие вопросы Delphi | 5 | 28.10.2007 16:15 |