Форум: "Начинающим";
Текущий архив: 2014.03.23;
Скачать: [xml.tar.bz2];
ВнизМигает картинка Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c