C # Dibujo en paneles

Estoy elaborando un horario diario y representando intervalos de tiempo con paneles, y las citas son aún más paneles en la parte superior.

El usuario puede desplazarse hacia arriba y hacia abajo para que el rango que puede ver se cambie antes o después. Cuando una cita se ejecuta al final del rango visible, quiero que haya un zig-zag que indique que la cita se extiende más allá de los límites visibles.

Identifiqué el caso en que esto ocurre y llamo a una función privadadrawZigZag(Panel p, int direction); para dibujarlo. El día se extiende horizontalmente, y la dirección -1 indica un zigzag a la izquierda y 1 indica un zigzag a la derecha.

Hasta ahora, todavía no estoy a la altura del zigzag, solo estoy experimentando conCreateGraphics() yFillPolygon(). Hasta ahora tengo:

    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);
    }

El primeroFillRectangle() Yo no tenía originalmente. Solo agregué eso cuando laFillPolygon() no funcionó.

Básicamente, no funciona y no estoy seguro de por qué. El panel es del color original, no se ha llenado DarkGreen. He usadoCreateGraphics() antes para otras cosas, y no estoy realmente seguro de por qué no está funcionando en esta instancia. ¿Algunas ideas

Edit: Lo siento, pensé que debería mencionar: Hay variasLabel controles en miPanel que describen la cita. Estos no deberían estar cubiertos si es posible.

Respuestas a la pregunta(2)

Su respuesta a la pregunta