我有一些奇怪的繪畫文物,我希望有人可以幫我牽制。手工繪畫問題
基本上我有一個左停靠的面板,應該有一個漸變的背景,一直沒有正常工作。我已經改變了顏色調試
screenshot http://img509.imageshack.us/img509/5650/18740614.png
面板停靠左,上有一個透明的控制(因此你可以看到沿邊緣的紅色小存根,其中的透明控制已經正確塗,拿起背景顏色)。
但是,當我緩慢調整面板大小時,底部會留下紅線,我希望這些紅線會被黃色填充物覆蓋。我正在使用的代碼如下:
// Construction
sidePanel.Paint += new PaintEventHandler(OnPaint);
private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Panel pb = sender as Panel;
PaintControl(pb.Width, pb.Height, sender, e, true);
}
private static void PaintControl(int width, int height, object sender, PaintEventArgs e, bool sidebar)
{
Rectangle baseRectangle = new Rectangle(0, 0, width -1, height-1);
using (LinearGradientBrush gradientBrush = new LinearGradientBrush(baseRectangle, WizardBaseForm.StartColour, WizardBaseForm.EndColour, 90))
{
e.Graphics.Clear(Color.Yellow);
e.Graphics.DrawRectangle(Pens.Red, baseRectangle);
e.Graphics.FillRectangle(Brushes.Yellow, baseRectangle);
}
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
}
這樣做的整體效果是我沒有得到任何一個不錯的純色,或者一個漂亮的漸變填充,當我調整。
夠公平的。奇蹟般有效。我仍然不明白爲什麼最初的問題表現出來呢? – Ian 2009-08-25 11:07:29
這是因爲當你調整大小時,繪畫事件不會被解僱。所以你需要用ResizeRedraw來強制它,其餘的不是強制性的,而是用自己的小方法來幫助改進。之前表單的閃爍是因爲您爲表單設置了樣式而不是面板。這是一個有趣的世界,手工繪畫世界! – ThePower 2009-08-25 11:29:22