我正在制定一個日程安排,並用面板代表時間片,約會上面還有更多面板。C#在面板上繪圖
用戶可以上下滾動,以便他們可以看到的範圍先後移動。當約會在可見範圍的末端運行時,我希望有一個曲折形,表示約會超出了可見邊界。
我已經確定了發生這種情況的情況,並且我調用一個專用函數drawZigZag(Panel p, int direction);
來繪製它。當天橫向擴展,方向-1指示左側曲折,1指示右側曲折。到目前爲止,我還沒有達到Z字形,我只是試驗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
控件描述了約會。如果可能,這些不應包括在內。
道歉,如果我完全不在這裏,但它看起來並不像控制權的失效/塗裝生命週期。例如訂閱/覆蓋有問題的控件的OnPaint事件等。 – lzcd 2011-03-31 23:39:21
請記住,您的控件在任何需要更新時都會重新繪製。因此,如果您嘗試在某個時間點繪製您的控件,則會將其重新繪製爲正常外觀,以免看到您的更改。如果您想查看更改,則需要使用Paint事件註冊您的繪畫方法。 – 2011-04-01 00:02:52