c# лагает программа при прорисовке

313
05 октября 2017, 10:49

Есть программа по типу игры лабиринта, реализована в windows forms. Необходимо сделать так, чтобы не весь лабиринт был виден сразу (как на рисунке). Был написан код, чтобы было видно только часть, а остальная была покрыта чёрной областью. Но при перемещении мыши программа сильно лагает (другие её элементы). Для буферизации свойству формы DoubleBuffered прописал значение true. Подскажите, как нужно изменить код чтобы избежать лагов, спасибо.

Код:

protected override void OnLoad(EventArgs e)  // этот участок отвечает за черный круг
    {
        base.OnLoad(e);
        SetEventHandlers(this);
    }
    private void SetEventHandlers(Control ct)
    {
        ct.Paint += PaintControl;
        ct.MouseMove += (o, e) => Invalidate(true);
        foreach (Control item in ct.Controls)
        {
            SetEventHandlers(item);
        }
    }
    int Radius = 100;
    void PaintControl(object sender, PaintEventArgs e)
    {
        //context = BufferedGraphicsManager.Current;
        //bufer = context.Allocate(Graphics, Form.DisplayRectangle);
        e.Graphics.SmoothingMode = SmoothingMode.None;
        Control ct = (Control)sender;
        Point ct_position = ct.PointToScreen(new Point(0, 0));
        Point client_position = this.PointToScreen(new Point(0, 0));
        int shiftX = ct_position.X - client_position.X;
        int shiftY = ct_position.Y - client_position.Y;
        Point p = PointToClient(MousePosition);
        p.Offset(-shiftX, -shiftY);
        using (GraphicsPath path = new GraphicsPath())
        {
            path.AddRectangle(new Rectangle(-shiftX, -shiftY, ClientSize.Width, ClientSize.Height));
            path.AddEllipse(p.X - Radius, p.Y - Radius, 2 * Radius, 2 * Radius);
            e.Graphics.FillPath(Brushes.Black, path);  // этот участок отвечает за черный круг
        }
    }
READ ALSO
Доступ к event из вне

Доступ к event из вне

Возможно ли дать доступ к event в другой dll?

217
Ошибка ORA-01008: не все переменные привязаны

Ошибка ORA-01008: не все переменные привязаны

Есть проблема с выполнением параметризованного запроса в c#Вот мой код:

290
Быстрый нечеткий поиск по коллекции C#

Быстрый нечеткий поиск по коллекции C#

Предположим, есть коллекция вида List<string>, в ней очень большое число записейПользователь должен начинать вводить слово, а программа должна...

346
редактирование xml файла в c#

редактирование xml файла в c#

вот есть у меня список в xml файле, я по нему прохожусь и вывожу в textbox, но что если нужно добавить/удалить элемент в xml файле? как через код это...

379