Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 01:34   #1
Кровава роза
Новичок
Джуниор
 
Регистрация: 03.06.2009
Сообщений: 2
По умолчанию PaintBox..курсовая 1 курс

Я делаю курсовик,японский сканворд. Препод поставил условие,чтобы сделать его обязательно на PaintBox! а у данного компонента есть такое "хорошее" свойство стирать участок рисунка,которые были перекрыты др окном...onPaint не помогает,так мне надо постоянно поверх нарисованного пририсовывать еще,а при использовании Repaint (и Refresh) все,что было нарисовано, стирается...рисуется только то,что должно рисоваться в данный момент...хотела через onPaint и Bitmap,но ,не смотря на то,что я в OnPaint прописываю - PaintBox.Canvas.Draw(0,0,Bitmap); при перекрывании все стирается (хотя книги доказывают обратное!авторов на мыло!!!!)...умные люди,помогите пожалуйста..
Скажите,как можно определить,активна ли форма в данный момент или перекрыта другим окном?если еть вариант как рисовать в onPaint так,чтобы рисовалось поверх имеющегося, и копировать изображение из Bitmap на PaintBox (кстати с CopyRect ситуация та же), подскажите...
Кровава роза вне форума Ответить с цитированием
Старый 03.06.2009, 12:12   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

В силу особенностей графической системы Windows рисовать надо ВСЕ изображение. Полностью. Не делить его на ту часть, которая уже нарисована и ту часть, которую нужно дорисовывать.
Это позволит избежать упомянутой проблемы (если я ее правильно понял).
Естественно, что рисовать надо на Bitmap и выводить на PaintBox методами Draw или CopyRect.
Можете выложить исходники программы?
Скандербег вне форума Ответить с цитированием
Старый 03.06.2009, 12:35   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 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.
mutabor вне форума Ответить с цитированием
Старый 03.06.2009, 20:04   #4
Кровава роза
Новичок
Джуниор
 
Регистрация: 03.06.2009
Сообщений: 2
По умолчанию

Я сама разобралась с проблемой просто глупая ошибка была спасибо , что откликнулись...в разных процедурах понаставила репэйнт ...все рисовала на битмэп...а в onpaint только PaintBox.Canvas.Draw(0,0,Bitmap);
написала
Кровава роза вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание 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