Я составляю дневной график и представляю временные интервалы с панелями, а встречи - это еще больше панелей наверху.
Пользователь может прокручивать вверх и вниз, чтобы диапазон, который они могли видеть, сместился раньше или позже. Когда встреча выходит за пределы видимого диапазона, я хочу, чтобы там был зигзаг, указывающий, что встреча выходит за пределы видимой границы.
Я определил случай, когда это происходит, и вызываю частную функцию 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
, которые описывают встречу. По возможности их не следует закрывать.