フォームにBackgroundImageプロパティを設定する代わりに、各フォームの背景にイメージを描画するためにOnPaintイベントを処理する代わりに、データベースにバックグラウンドイメージを格納しています。問題はフォームの各コントロールがフォームの親コントロールを無効にするため、OnPaintが複数回(12x)発生することです。イメージが記憶されているにもかかわらず、フォームはすぐにちらつきます。私はこの効果を取り除く必要があります。親フォームを再描画する最後のコントロールを特定する方法を見ることができないので、バックグラウンドを1回だけ適用できます。何か案は?複数の背景をrepaintする方法.NET Winform
protected override void OnPaint(PaintEventArgs e)
{
if (Program.AppManager.AppBackgroundImage != null && !this.EH_BackImageNotApplicable)
{
e.Graphics.DrawImage(Program.AppManager.AppBackgroundImage, this.ClientRectangle);
}
}
OnPaintメソッドのコードを共有できますか? –
これを追加しました。 OnPaintメソッドはFormBaseでオーバーライドされています。あなたが何か他のものが必要な場合は教えてください。 – David