Je rencontre d'étranges artefacts de dessin que j'espère que quelqu'un pourrait m'aider à cerner. Fondamentalement, j'ai un panneau ancré à gauche qui est censé avoir un fond dégradé qui n'a pas fonctionné correctement. J'ai changé les couleurs pour le débogageManuel Peinture Numéro
screenshot http://img509.imageshack.us/img509/5650/18740614.png
Le panneau est accosté à gauche, et dispose d'un contrôle transparent sur elle (d'où vous pouvez voir les petits bouts de rouge le long des bords où le contrôle transparent a été correctement peint , ramasser la couleur de fond).
Lorsque je redimensionne le panneau lentement, je reçois des lignes rouges en bas, que je m'attendais à recouvrir avec des remplissages jaunes. Le code que je utilise est comme suit:
// 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();
}
L'effet global de c'est que je ne reçois pas soit une belle couleur unie ou un remplissage dégradé agréable quand je remets à la côte.
Assez juste. Fonctionne comme un charme. Je ne comprends toujours pas pourquoi le problème original s'est manifesté bien? – Ian
C'est parce que lorsque vous redimensionnez, l'événement paint ne se déclenche pas. Donc vous devez le forcer avec le ResizeRedraw, le reste n'est pas obligatoire mais aider avec l'amélioration de leurs propres petites manières. Le scintillement de votre formulaire était auparavant parce que vous définissiez le style pour le formulaire et non le panneau. C'est un monde amusant, le monde de la peinture manuelle! – ThePower