|
DelphiXE3 [FMX] 画面クリア 2014/05/15 |
画面クリアは、絵を作図する最初に行う作業で、画面を綺麗にする(クリアする)処理のことです。キャンバス(Canvas)に 画面クリアを行うメソッドがあります。
以下、ヘルプより
TCanvas.
Clear | procedure Clear(const Color: TAlphaColor); |
TCanvas オブジェクトの表面のクリアします。
Clear は、TCanvas オブジェクトの表面をクリアし、指定された色でそれを塗りつぶすよう、TCanvas の子孫で実装します。
AColor パラメータは、TCanvas の表面を塗りつぶす色を示します。
TCanvas を塗りつぶさないでクリアするには、Clear を次のようなコードで呼び出します:
|
[Shapes]内のペイントボックス(PaintBox)を配置し、OnPaintイベントハンドラを下記のようにしてみます。uses節に「UIConsts」を追記します。
procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
begin
Canvas.Clear(claWhite);
end; |
保存・ビルド(コンパイル)・実行をすると下図のようになります。
とすると、下図のように、青色でクリアされます。
また、ClearRectメソッドというものもあります。
TCanvas.ClearRect |
procedure ClearRect(const ARect: TRectF;
const AColor: TAlphaColor = 0); |
TCanvasオブジェクトから、四角形の領域をクリアします。
ClearRect は、TCanvas オブジェクトから四角形分の領域をクリアし、指定された色でそれを塗りつぶすよう、TCanvas の子孫で実装します。
ARect パラメータは、クリアする四角形領域を示します。
AColor パラメータは、ARect 領域を塗りつぶす色を示します。 このパラメータは任意で、指定されない場合、ARect の領域は透明になります。 デフォルトでは、AColor は 0 です。 |
で、試しに、
procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
begin
Canvas.Clear(claBlue);
PaintBox1.Canvas.ClearRect(RectF(10,10,50,50),claRed);
end; |
のようにやってみましたが、四角形領域(10,10,50,50)の中だけが赤色になるのかなと想像していましたが、ペイントボックス全体が赤色になってしまいました。
procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
var
r : TRectF ;
begin
Canvas.Clear(claBlue);
r.Create(10, 10, 50, 50);
PaintBox1.Canvas.ClearRect(r,claRed);
end; |
のようにしてみても同じでした。
どうも正常に動作していない様子です。これが Delphi XE3 側の問題なのか、当方PCが異常なのか、仕様なのか、何らかの特別な前処理が必要なのか、等については不明です。
いずれにせよ、この状態では使えませんので、画面の一部分をクリアしたい=塗り潰したい場合は、FillRectメソッド等を利用して作図を行なった方が良いように思われます。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/05/14
2014/05/15
▼2014/05/16
シェアウェア
Script!World
データベース
|