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