我正在制定一份日程表,用面板表示时间段,而约会则是在其上方的另一个面板。
用户可以上下滚动以移动可见范围。当约会超出可见范围时,我想要有一个Zig-Zag指示它延伸到可见范围之外。
我已经确定了这种情况,然后调用私有函数drawZigZag(Panel p, int direction);
来进行绘制。天数水平展开,方向-1表示左侧的zigzag,1表示右侧的zigzag。
目前为止,我还没有涉及到绘制Zig-Zag,我正在尝试使用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
控件,描述了预约。如果可能的话,这些控件不应被覆盖。