[.net] графика

state7401281

как рисовать не из paint event'а, а с таймера?

state7401281

где взять graphics?

agaaaa

Рисуй из Paint, в таймере вызывай Control.Invalidate;

klyv

Имо, лучше рисовать в таймере, а отображать (переносить на форму) в Paint.

agaaaa

Чем?
Тогда придётся лишний раз создавать Graphics и делать третий буфер.
Кроме того дефолтный таймер неточный.

klyv

лишний буфер всяко лишним не будет - вдруг не только в таймере надо что-то менять, да и чтобы могло пройти несколоько событий таймера, пока не вызовется OnPaint (например, когда окно не видно, перерисовывать его незачем, достаточно в памяти разобраться, поменять нужные значения)

agaaaa

> лишний буфер всяко лишним не будет
потеря производительности и памяти
> вдруг не только в таймере надо что-то менять
ну и пусть меняют
> да и чтобы могло пройти несколоько событий таймера, пока не вызовется OnPaint
они и так могут пройти
> (например, когда окно не видно, перерисовывать его незачем, достаточно в памяти разобраться, поменять нужные значения)
что в Paint, что в таймере это решается заменой добавлением if (!AmIvisible return;

klyv

они и так могут пройти
что в Paint, что в таймере это решается заменой добавлением if (!AmIvisible return;
Это есть дублирование функций ОСи.
Он и так вызовет Paint только если видно окошко.

state7401281

> Чем?
> Тогда придётся лишний раз создавать Graphics и делать третий буфер.
как в таймере создать Graphics?

agaaaa

читай MSDN, там всё есть
using(var g = Graphics.FromImage(myBackBuffer{ code; }

Dasar


using (var g = this.CreateGraphics
{
}

state7401281

обоим спасибо
Оставить комментарий
Имя или ник:
Комментарий: