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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] 破線四角形描画 2014/05/18
 
破線四角形描画(DrawDashRect)は、キャンバス(Canvas)に 特殊な破線の四角形を描画する機能です。 例えば、お絵描きプログラムやCADプログラム等では、選択用の四角形描画などにでも利用出来るかもしれません。
 
以下、ヘルプより
TCanvas.
DrawDashRect
procedure DrawDashRect(const ARect: TRectF;
 const XRadius, YRadius: Single;
 const ACorners: TCorners;
 const AOpacity: Single;
 const AColor: TAlphaColor);
(※記載無し)
 
[Shapes]内のペイントボックス(PaintBox)を配置し、ClipChildernプロパティを True にしておきます。uses節に「UIConsts」を追記します。

OnPaintイベントハンドラを下記のようにしてみます。
procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
begin
 with Canvas do begin
  Clear(claWhite);
  DrawDashRect(RectF(10,10, 100,100),0,0,AllCorners,1.0,claBlue);
 end;
end;
保存・ビルド(コンパイル)・実行をすると下図のようになります。

点(10,10)から点(100,100)までを対角点とする、透過率 1.0 (完全不透明状態)で、青色の破線四角形を描画します。
下記のように、始点・終点に変数を利用する事も可能です。
procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
var
 r : TRectF ;
begin
 r := TRectF.Create(10,10, 100,100);
 with Canvas do begin
  Clear(claWhite);
  DrawDashRect(r,0,0,AllCorners,1.0,claBlue);
 end;
end;
など。
 
破線四角形は、Strokeブラシの状態を無視します。
Stroke.Kind でブラシの種類(色、ビットマップ、グラデーション)、
Stroke.Thickness で線幅、
Stroke.Dash で線種、
Stroke.Cap で線端状態、
Stroke.Join で結合部状態、
を指定しても効果はありません。
 
例えば下記のようにしても、
procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
begin
 with Canvas do begin
  Clear(claWhite);
  Stroke.Kind := TBrushKind.bkGradient ;
  Stroke.Gradient.Color := claRed ;
  Stroke.Gradient.Color1 := claYellow ;
  Stroke.Thickness := 20 ;
  Stroke.Dash := TStrokeDash.sdDash ;
  Stroke.Cap := TStrokeCap.scRound ;
  Stroke.Join := TStrokeJoin.sjBevel ;
  DrawDashRect(RectF(10,10, 140,140),0,0,AllCorners,1.0,claRed);
 end;
end;
ブラシ状態は無視されて、下図のように描画されます。

 
 
第2引数 XRadius、第3引数 YRadius は、四角形のコーナーの大きさを指定します。
with Canvas do begin
 Clear(claWhite);
 DrawDashRect(RectF(10,10, 140,140),10,20,AllCorners,1.0,claBlue);
end;
とすると、下図のようになります。

 
 
第4引数 ACorners は、どのコーナーに対して コーナー処理を行うのかを指定します。
AllCorners は、TCorners 型の定数で、四角形の 4 つすべての角の集合を定義したものです。
AllCorners は、次の TCorners 値に初期化されます。
   [TCorner.crTopLeft, TCorner.crTopRight,
   TCorner.crBottomLeft, TCorner.crBottomRight];
AllCorners はコントロールの描画のために使用されます。
例えば、上の2つのコーナーのみ処理をしたい場合には、
with Canvas do begin
 Clear(claWhite);
 DrawDashRect(RectF(10,10, 140,140),10,20,
  [TCorner.crTopLeft, TCorner.crTopRight],1.0,claBlue);
end;
とすると、下図のようになります。

AllCorners を指定すると、4つ全てのコーナー処理を行います。
 
 
第5引数 AOpacity で、透過率を指定する事が出来ます。
0.0(完全透明)〜1.0(完全不透明)の範囲内で指定します。
with Canvas do begin
 Clear(claWhite);
 Stroke.Thickness := 20 ;
 Stroke.Kind := TBrushKind.bkSolid ;
 Stroke.Color := claRed ;
 DrawRect(RectF(10,10, 100,100),5,5,AllCorners,0.5);
 DrawDashRect(RectF(50,50, 140,140),10,20,AllCorners,0.5,claBlue);
end;
とした場合は、下図のようになります。

 
 
第6引数 AColor で色を指定します。
 
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/05/17
 2014/05/18
▼2014/05/19
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.