К списку форумов К списку вопросов
Стирается график в Delphi
Dr Alex
03.05.2004 - 21:52
вопрос от начинающего программиста... вот предположим рисую линию, после того как над этой линией провожу другим окном (н-мер about) линия стирается... что я не так делаю???
Не обессудьте, если вопрос некорректный...
archimag
1 - 03.05.2004 - 22:39
Я не дельфист, но всё же... Если ты хочешь рисовать на произвольном окне (не знаю насчёт специальных компоненто, в дельфи не работаю) то необходимо обрабатывать сообщение WM_PAINT, в Delphi это событие OnPaint. При вызове обработчика рисуешь всё что угодно. Если неоходимо обновить изображение на окне, то вызываешь метод Invalidate. Windows так и делает: если над твоим окном провести другим, то она посылает окну сообщение о необходимости перерисовать себя и твоё изображение стирается.
Grigoriy
2 - 04.05.2004 - 01:09
И еще в дополнение - если график отнимает много машинного времени, то рисуй в битмап, а уже его кидай на событие OnPaint
Dr Alex
3 - 04.05.2004 - 14:17
1,2 большое спасибо! Вроде ясно, щас попробую сделать...
ShiFu Reflex
4 - 10.05.2004 - 20:34
Како
ShiFu Reflex
5 - 10.05.2004 - 20:37
Какое сообщение перекрывать зависит от того, на какой части окна рисуешь. Если в клиентской области - перекрывай WM_PAINT, если на служебной части - WM_NCPAINT.
Для ускорения работы используй ASM или хотя бы Bitmap.ScanLine(см ман, описан нормально).
x77
6 - 10.05.2004 - 21:44
Grigoriy, можно просто выставить Form1.DoubleBuffered := TRUE, тогда она сама будет сначала рисовать в виртуальный битмап, а потом одниим махом отображать его на форме.
steppler
7 - 11.05.2004 - 09:42
Если использовать TImage , прорисовка тоже будет автоматом.

К списку вопросов на форуме Программирование

>>