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