画面の更新

提供: RAD Studio
移動先: 案内検索

グラフィック プログラミングの概要 への移動


オペレーティング システムは、あるタイミングで画面上のオブジェクトの再表示を行う必要があると判断すると、Windows 上で WM_PAINT メッセージを発行します。VCL はこのメッセージを OnPaint イベントにルーティングします そのオブジェクトの OnPaint イベント ハンドラを作成した場合は、Refresh メソッドを使用すると OnPaint イベント ハンドラが呼び出されます。 フォーム内の OnPaint イベント ハンドラ用に生成されるデフォルト名は、FormPaint です。 Refresh メソッドを、プログラマが明示的に使ってフォームやコンポーネントを再描画することもできます。 たとえば、フォームの OnResize イベント ハンドラ内で Refresh を呼び出すと、任意のグラフィックを再描画できます。また、VCL を使用している場合は、フォームの背景をペイントすることもできます。

一部のオペレーティング システムは、無効になっているウィンドウのクライアント領域の再描画を自動的に処理しますが、Windows はこれを行いません。 Windows オペレーティング システムでは、画面に描画されたものすべてが永続的なものです。 フォームまたはコントロールが一時的に覆い隠されている場合、たとえばウィンドウをドラッグしている場合など、それを再表示するときには、フォームまたはコントロールが隠されている領域を再ペイントする必要があります。 WM_PAINT メッセージの詳細は、Windows のオンライン ヘルプを参照してください。

TImage コントロールを使ってグラフィック イメージを表示する場合、TImage に含まれているグラフィックのペイントと更新は自動的に処理されます。 TImage が実際にどのグラフィック(ビットマップ、ドローイング、または別のグラフィック オブジェクト)を表示するかを指定するプロパティは、Picture プロパティです。 また、Proportional プロパティを設定すると、イメージを変形せずに完全にイメージ コントロール内に表示できます。 TImage 上で描画すると、持続的なイメージが作成されます。 したがって、その中のイメージを再描画するための操作は何も必要ありません。 それに対して、TPaintBox キャンバスはスクリーン デバイス(VCL アプリケーション)に直接マップされるので、PaintBox キャンバスに描画されたすべてのものが一時的なものです。これは、フォーム自身も含め、コントロールのほとんどに当てはまります。 したがって、TPaintBox 上にコンストラクタで描画またはペイントする場合、クライアント領域が無効になるたびにイメージが再ペイントされるように OnPaint イベント ハンドラにコードを追加する必要があります。

関連項目