-
День добрый. Подскажите пожалуйста, как отменить автоочистку canvas'a формы, при её сворачивании-разворачивании. Т.е. я что-то рисую, сворачиваю форму, разворачиваю, все на месте
Заранее спасибо!
-
В общем случае необходимо учебник по Delphi почитать.
В частном - перерисовывать область ClipRect заново в событии OnPaint, либо использовать TImage, который хранит изображение в памяти и сам выполняет перерисовку в нужный момент.
-
у меня заранее не известно что и где будет нарисовано. т.е. в зависимости от таймера, расположения мышки и нажатия неких клавиш,
рисуются разные объекты. в Onpaint только определенная последовательность
-
Я ещё раз говорю - найди книгу.
Рисовать надо в памяти, а в OnPaint выводить на экран то, что в данный момент в памяти есть.
-
> автоочистку canvas'a формы
это не так.
создай объект TBitmap, рисуй все в нем а по событию OnPaint отрисовывай на canvas'е формы
-
> как отменить автоочистку canvas'a формы, при её сворачивании-
> разворачивании.
Как можно отменить то, чего нет?
Найми программиста.
-
> Korsv (18.09.11 11:26) [2]
Надо ж как раз наоборот...))
> brother © (19.09.11 06:17) [4]
Если рисуется что-то векторное и динамически, то лучше без битмапа...)
-
> БезымянныйСтудент (02.11.11 11:45) [6]
> Если рисуется что-то векторное и динамически, то лучше без битмапа...)
Если через GDI, то без буферного битмапа не стоит рисовать.
-
А на чем вообще лучше рисовать что-то?
Вот у меня есть функция, которая возвращает TBitMap. Во время работы программы это делается много раз, каждый раз рисунок разный.
На что мне его лучше выводить, что бы не было этих морганий?
-
в основном юзают GDI, и потому советую ВСЕГДА использовать Bitmap
> На что мне его лучше выводить, что бы не было этих морганий?
на Canvas формы вестимо функцией BitBlt, таймером с интервалом в 24 попробуй...
что эа мограния?
-
> Если через GDI, то без буферного битмапа не стоит рисовать.
Просто сделать DoubleBufered==True - и хватит. =)
> что бы не было этих морганий
В OnPaint.
-
Я в OnPaint и вывожу:
buffer := GetBitmap; // моя функция, возвращает TBitMap
paintbox.Canvas.CopyRect(bounds(0,0,buffer.Width,buffer.Height),
buffer.Canvas,bounds(0,0,buffer.Width,buffer.Height));
А DoubleBufered у чего ставить? У PaintBox'а не нашел..
-
Хмм! На канвас формы выводит всё нормально, без морганий (поставил DoubleBufered у неё), но у PaintBox'а нету DoubleBufered. На что еще можно вывести с DoubleBufered, кроме формы?
-
> кроме формы?
тебе чем канва формы не угодила то? имхо наиболее оптимальный вариант СВОЕЙ отрисовки...
-
Зная, как реализован DoubleBufered у TWinControl... лучше уж свой сделать )
-
> DoubleBufered
в топку,
мы зачем в начале рисуем на Bitmap, а ПОТОМ уже готовое изображение на канву формы а?