|  
  
  
   
   
   
   
   
   
  | 
| 
| 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 です。
 |  で、試しに、
 
 
のようにやってみましたが、四角形領域(10,10,50,50)の中だけが赤色になるのかなと想像していましたが、ペイントボックス全体が赤色になってしまいました。
| procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas); begin
 Canvas.Clear(claBlue);
 PaintBox1.Canvas.ClearRect(RectF(10,10,50,50),claRed);
 end;
 |  
 
 
のようにしてみても同じでした。
| 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
 データベース
 
 |