помогите с ламерской проблемой.
юзер должен рисовать мышкой на канве тформы.
если по нарисованному повозить окном, то нарисованное стирается. refresh не помогает. в timage такого бардака нет, но надо на tform.
ну не хранить же все нарисованное в отдельном массиве и не перерисовывать каждый раз...
Здравствуйте, bipka, Вы писали:
B>помогите с ламерской проблемой. B>юзер должен рисовать мышкой на канве тформы. B>если по нарисованному повозить окном, то нарисованное стирается. refresh не помогает. в timage такого бардака нет, но надо на tform. B>ну не хранить же все нарисованное в отдельном массиве и не перерисовывать каждый раз...
а почему бы не положить TImage размером во всю форму???
... << RSDN@Home 1.0 beta 6a silent>>
— сколько программистов надо чтобы заменить сгоревшую лампочку?
— сколько не бери, а лампочку не поменять — проблема аппаратная, программным путем не решается...
Здравствуйте, bipka, Вы писали:
B>помогите с ламерской проблемой. B>юзер должен рисовать мышкой на канве тформы. B>если по нарисованному повозить окном, то нарисованное стирается. refresh не помогает. в timage такого бардака нет, но надо на tform. B>ну не хранить же все нарисованное в отдельном массиве и не перерисовывать каждый раз...
использовать TBitmap и "перерисовывать каждый раз"
Здравствуйте, bipka, Вы писали:
B>помогите с ламерской проблемой. B>юзер должен рисовать мышкой на канве тформы. B>если по нарисованному повозить окном, то нарисованное стирается. refresh не помогает. в timage такого бардака нет, но надо на tform. B>ну не хранить же все нарисованное в отдельном массиве и не перерисовывать каждый раз...
ага. перерисовывать.
double buffering называется.
выводить битмап на экран функцией BitBlt. А еще можно отслеживать изменяемый участок картинки
Ну блин и насоветовали... Конечно если быстро и коряво то можно хранить битмап формы и в Paint заливать его на форму, а лучше только стёртую часть.
B>если по нарисованному повозить окном, то нарисованное стирается. refresh не помогает.
Естественно! Ведь инфа о нарисованном нигде не сохраняется окно выполняет свою стандартную отрисовку и всё. B>ну не хранить же все нарисованное в отдельном массиве и не перерисовывать каждый раз...
Именно! Это и есть самый грамотный вариант, тем более что в Винде всё для этого есть. Почитай в Win'32 Programmers Reference или ещё где про метафайлы (Metafiles). Короче если коротко то инфа по рисованию записывается в метафайл, а потом когда нужно (OnPaint) проигрывается на канве формы. Причём при желании нарисованное можно редактировать, откатывать изменения копировать и сохранять в файл, а также инфа записанная в метафайлах является аппаратно-независимой, т.е. можно выводить там на принтер или ещё куда.
Здравствуйте, bipka, Вы писали:
B>помогите с ламерской проблемой. B>юзер должен рисовать мышкой на канве тформы. B>если по нарисованному повозить окном, то нарисованное стирается. refresh не помогает.
Естественно! С чего это нарисованное должно храниться?
B> в timage такого бардака нет, но надо на tform.
Какая разница где? Положи timage на форму и всего делов, правильно тебе советовали, но если тебе не нравится как она моргает, то положи на форму TPaintBox и рисуй в нем, только все равно придется TBitmap заводить, чтоб нарисованное там хранить.
B>ну не хранить же все нарисованное в отдельном массиве и не перерисовывать каждый раз...
Зачем в массиве? В TBitmap. Только перерисовывать нужно только только стертые области по событию OnPaint в пайнтбоксе. И быстрее всего использовать BitBlt.