フォームの背景初期化処理(背景のクリア)を抑制する - C#

概要

フォームなどの画面を頻繁に描画する場合に画面がちらつく場合があります。原因の一つとして、画面の再描画時に背景を初期化が挙げられます。
背景の初期化はフォームの背景を背景色で塗りつぶして初期化するため、画面がちらついて見える原因となります。画面の再描画時に背景の初期化が必要ない場合は背景の初期化をしないことでちらつきを抑えることができます。
背景の初期化処理は OnPaintBackGroundメソッドでされるため、OnPaintBackGroundメソッドをオーバーライドして処理を何もしなければ、背景の初期化処理をしないことになります。

メモ
ダブルバッファリングの有効化、グラフィックスの性能、Windowsのバージョンにより、ちらつきが発生しない場合もあります。

背景の初期化の無効化

以下のコードをフォームのクラスに追記します。
protected override void OnPaintBackground(PaintEventArgs pevent)
{
}
注意
背景が描画されない動作になるため、Paintイベントなどで背景部分も描画する必要があります。

プログラム例

コード

FormMain.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace App
{

  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    protected override void OnPaintBackground(PaintEventArgs pevent)
    {
    }
  }
}

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2010-07-06
iPentec all rights reserverd.