Я хочу создать библиотеку чертежей, чтобы я мог визуализировать некоторый код (что-то вроде обработки для Java). Обновление нарисованного вызывает мерцание, и я не могу найти способ исправить это.
Я рисую с помощью класса Drawing и WinForms.
Если есть другой / лучший способ реализовать это с помощью чего-то другого (кроме Unity), я готов попробовать это.
Я попробовал это с двойной буферизацией, которая ничего не сделала. Invalidate и Refresh сделали его намного хуже.
РЕДАКТИРОВАТЬ: Это исправлено (см. Комментарии). Я использовал найденный таймер здесь
Ниже приведен мой класс Форма.
Timer timer;
int i = 0;
Screen screen;
Rectangle canvas;
public Form1() {
InitializeComponent();
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
DoubleBuffered = true;
screen = Screen.FromControl(this);
canvas = screen.WorkingArea;
timer = new Timer();
timer.Interval = 10;
timer.Tick += new EventHandler(draw);
timer.Enabled = true;
}
public void draw(object source, EventArgs e) {
Graphics g = CreateGraphics();
g.FillRectangle(new SolidBrush(Color.Black), canvas);
g.FillRectangle(new SolidBrush(Color.White), i, 0, 100, 100);
i++;
}