AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] 画面クリア 2014/05/15
 
画面クリアは、絵を作図する最初に行う作業で、画面を綺麗にする(クリアする)処理のことです。キャンバス(Canvas)に 画面クリアを行うメソッドがあります。
 
以下、ヘルプより
TCanvas.
Clear
procedure Clear(const Color: TAlphaColor);
TCanvas オブジェクトの表面のクリアします。
Clear は、TCanvas オブジェクトの表面をクリアし、指定された色でそれを塗りつぶすよう、TCanvas の子孫で実装します。
 
AColor パラメータは、TCanvas の表面を塗りつぶす色を示します。
TCanvas を塗りつぶさないでクリアするには、Clear を次のようなコードで呼び出します:
MyCanvas.Clear(0);
 
[Shapes]内のペイントボックス(PaintBox)を配置し、OnPaintイベントハンドラを下記のようにしてみます。uses節に「UIConsts」を追記します。

procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
begin
 Canvas.Clear(claWhite);
end;
保存・ビルド(コンパイル)・実行をすると下図のようになります。

 
Canvas.Clear(claBlue);
とすると、下図のように、青色でクリアされます。

 
 
また、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
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.