Я составляю расписание дня и представляю временные интервалы с панелями, а встречи - это еще больше панелей сверху.
Пользователь может прокручивать вверх и вниз, так что диапазон, который он видит, смещается раньше или позже. Когда встреча выходит за пределы видимого диапазона, я хочу, чтобы там был зигзаг, указывающий, что встреча выходит за пределы видимых границ.
Я определил случай, когда это происходит, и я вызываю приватную функцию drawZigZag(Panel p, int direction);
, чтобы нарисовать ее. День распространяется горизонтально, и направление -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()
не работает.
В принципе, это не работает, и я не уверен, почему. Панель имеет оригинальный цвет - она не была закрашена DarkGreen. Я использовал CreateGraphics()
раньше для других вещей, и я не совсем уверен, почему это не работает в этом случае. Есть идеи?
Редактировать: Извините, я подумал, что должен упомянуть: На моем Panel
есть несколько Label
элементов управления, которые описывают назначение. Они не должны быть покрыты, если это возможно.