Рисование C # на панелях

Я составляю дневной график и представляю временные интервалы с панелями, а встречи - это еще больше панелей наверху.

Пользователь может прокручивать вверх и вниз, чтобы диапазон, который они могли видеть, сместился раньше или позже. Когда встреча выходит за пределы видимого диапазона, я хочу, чтобы там был зигзаг, указывающий, что встреча выходит за пределы видимой границы.

Я определил случай, когда это происходит, и вызываю частную функцию drawZigZag (Панель p, направление int); , чтобы нарисовать его. День распределен по горизонтали, и направление -1 указывает на зигзаг слева, а 1 указывает на зигзаг справа.

Пока я еще не дошел до зигзага, я просто экспериментирую с CreateGraphics () и FillPolygon () . Пока у меня есть:

    private void drawZigZag(Panel p, int direction) // 1 = right, -1 = left
    {
        Graphics g = p.CreateGraphics();

        g.FillRectangle(new SolidBrush(Color.FromArgb(0, Color.Black)), p.DisplayRectangle);

        Point[] points = new Point[4];

        points[0] = new Point(0, 0);
        points[1] = new Point(0, p.Height);
        points[2] = new Point(p.Width, p.Height);
        points[3] = new Point(p.Width, 0);

        Brush brush = new SolidBrush(Color.DarkGreen);

        g.FillPolygon(brush, points);
    }

Первый FillRectangle () , которого у меня изначально не было. Я добавил это только тогда, когда FillPolygon () не t работает.

По сути, это не работает, и я не знаю почему. Панель оригинального цвета - не залита DarkGreen. Я раньше использовал CreateGraphics () для других вещей, и я не совсем уверен, почему он не работает в данном случае. Есть идеи?

Редактировать: Извините, я подумал, что стоит упомянуть: на моей панели есть несколько элементов управления Label , которые описывают встречу. По возможности их не следует закрывать.

6
задан Ozzah 31 March 2011 в 23:28
поделиться