Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.03.23;
Скачать: CL | DM;

Вниз

Мигает картинка   Найти похожие ветки 

 
alexdn ©   (2013-05-27 14:06) [0]

Рисование идёт на Tpaintbox событие onpaint, при этом рисование вынесено в отдельную процедуру
DrawPicture(PaintBox1.Canvas);
кода там много, так вот, при перемещении ползунка формы картинка начинает мигать (перерисовываться). Можно ли тут что то сделать, или это уже не хватает времени на перерисовку?
вот картинка - http://s018.radikal.ru/i520/1305/59/9a83a38a644f.png
скрин может не совсем правильно передаёт мигание, но думаю будет понятно, красное окно сверху прорисовывается отдельно, оно активно.


 
sniknik ©   (2013-05-27 14:35) [1]

попробуй включить DoubleBuffered


 
"Добрый Сок"   (2013-05-27 15:08) [2]


> sniknik ©


DoubleBuffered начинается в WinControl, PaintBox1 не наследник WinControl


 
brother ©   (2013-05-27 15:10) [3]

используй canvas формы...


 
sniknik ©   (2013-05-27 15:13) [4]

> DoubleBuffered начинается в WinControl, PaintBox1 не наследник WinControl
у формы/панели на которой лежит.


 
sniknik ©   (2013-05-27 15:19) [5]

кстати можно и по "аналогии"... рисовать на отдельном битмапе, можно в фоне, а не прямо в событии паинта, в паинте только копировать нужное.


 
robt5   (2013-05-27 15:47) [6]


> кстати можно

не можно а нужно, рисовать в памяти


 
alexdn ©   (2013-06-01 16:20) [7]

Вот, попробовал в памяти -
bitmap_mem.width:=PaintBox1.Width;
bitmap_mem.height:=PaintBox1.Height;
DrawPicture(bitmap_mem.Canvas);
//PaintBox1.Canvas.Draw(0, 0, bitmap_mem);
bitblt(bitmap_mem.canvas.Handle,0,0,bitmap_mem.width,bitmap_mem.height,PaintBox1 .Canvas.Handle,0,0,srcCopy);
bitblt видимо не работает.. что не так? если раскрыть Draw, то тогда работает. Но хотелось бы именно через bitblt, говорят она быстрее..


 
MBo ©   (2013-06-01 17:26) [8]

>говорят она быстрее..
преувеличивают

>bitblt видимо не работает
она-то работает, если параметры не путать


 
alexdn ©   (2013-06-01 18:20) [9]

> MBo ©   (01.06.13 17:26) [8]
Это какой это спутан?


 
alexdn ©   (2013-06-01 18:47) [10]

Ну да, bitblt(PaintBox1.canvas.Handle,0,0,PaintBox1.width,PaintBox1.height,bitmap_mem.C anvas.Handle,0,0,srcCopy);
но всё равно, мигать стало не чуть не меньше, если даже не больше, так что рисование в памяти видимо не выход..


 
robt5   (2013-06-01 20:18) [11]


> рисование в памяти видимо не выход..

более чем уверен, что у тебя, как обычно, все происходит через Jo


 
alexdn ©   (2013-06-01 20:42) [12]

Видимо просто сам метод не тянет, попробовал на аналогичной программе поставить задержку на 75 миллисекунд, получилось почти то же самое, т.е DrawPicture(bitmap_mem.Canvas); видимо всё тянет..


 
alexdn ©   (2013-06-01 21:19) [13]

Т.е. выполнение самого рисования длится 75 мил сек, т.е. если его ставить в OnPaint, то заикаться начинает..


 
brother ©   (2013-06-02 08:59) [14]

откажись от PaintBox1 и [3]


 
alexdn ©   (2013-06-02 13:50) [15]

brother © я тебе в аську черкнул, хорошо бы пообщаться.



Страницы: 1 вся ветка

Текущий архив: 2014.03.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.005 c
2-1370372241
oliksin
2013-06-04 22:57
2014.03.23
Помогите разобраться с программой. Строки.


15-1380924488
xayam
2013-10-05 02:08
2014.03.23
Помогите распознать мелодию


1-1323639179
RAD
2011-12-12 01:32
2014.03.23
Удалить файл, открытый другим процессом


15-1380700463
ПЛОВ
2013-10-02 11:54
2014.03.23
вопрос по событиям


2-1370071648
Fr
2013-06-01 11:27
2014.03.23
Drag & Drop и TDrawGrid