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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] 楕円(Ellipse)2013/12/20
 
前回は [Shapes]内の「角丸四角形」(RoundRect)について見てみました。
今回は、同じく[Shapes]内の「楕円」(Ellipse)について見てみます。
 
 
[Shapes]内
FMX
 
ヘルプより。
TEllipse は 2 次元の楕円を定義したものです。TControl を継承しており、コントロールを作成するためのスタイルで使用できます。
 
TEllipse の以下のプロパティによって、楕円の形と位置が定義されます。
1.最初の楕円は、TEllipse オブジェクトの境界を表す四角形 ShapeRect に内接しています。
2.次に、回転軸 RotationCenter が、ローカル座標軸に沿って倍率 Scale に比例して移動します。
3.その後、得られた回転軸を中心に RotationAngle の角度だけ、楕円が回転します。
 
メモ: 拡大縮小を行うと、倍率に応じてオブジェクトの形が拡大縮小されるだけでなく、輪郭の StrokeThickness もそれぞれの軸の倍率に応じて変わります。
 
TEllipse は、Paint メソッドを使って、輪郭を描画し、背景を塗りつぶします。
Paint では、TEllipse オブジェクトの Stroke、StrokeThickness、StrokeCap、StrokeDash、StrokeJoin、Fill の各プロパティで定義されている特性、色、不透明度を持つ描画ペンおよびブラシを使って、輪郭を描画し背景を塗りつぶします。
 


 
Fill
形の背景を塗りつぶすのに使用する、色とパターンを決定します。
Fill の値は FMX.Types.TBrush オブジェクトです。これは、形の背景を塗りつぶすための、グラデーション、ブラシ パターン、ブラシ色、不透明度、他のパラメータを定義することができます。
Stroke
グラフィックス プリミティブの直線や形状の輪郭を描画する際に使用される、色やパターンを決定します。
 
Stroke の値は FMX.Types.TBrush オブジェクトです。
StrokeDash
直線または形状の曲線の、一点鎖線スタイルを示します。
 
曲線または直線には、複数のセグメント(ダッシュとドットのグループ)を含めることができ、異なる長さおよびそのセグメント間のスペースで構成されます。
 
取り得る値は sdSolid、sdDash、sdDot、sdDashDot、sdDashDotDot、または sdCustom 定数で、FMX.Types.TStrokeDash 型で定義されています。
 
デフォルトは sdSolid で、単一の実線です。
新しいカスタム スタイルを作成するには、FMX.Types.TCanvas.SetCustomDash を使用します。
 
StrokeDash が sdSolid でなかった場合、StrokeCap は、曲線の各線のセグメントの終端がに影響する点に注意してください。
StrokeThickness
直接または形の曲線を描画する、ストローク アウトラインの幅をピクセルで示します。
StrokeCap
直線や曲線の終端を描画するために使用される、グラフィック スタイルを示します。
 
取り得る値は FMX.Types.TStrokeCap 型で定義されている、scFlat および scRound 定数です。
デフォルトは scFlat -- 四角形の線の終端です。
曲線または直線には、複数の線要素が含まれている場合があります。 StrokeDash が sdSolid ではない場合、StrokeCap は各線要素の終端に影響を及ぼします。
StrokeJoin
直線のセグメント、形状曲線のセグメント、またはパスのセグメントをつなぐ、結合点のスタイルを示します。
 
取り得る値は、sjMiter、sjRound、sjBevel 定数で、FMX.Types.TStrokeJoin 型で定義されています。
 
デフォルトは sjMiter で、線のセグメント群を、セグメント間でシャープな角をなめらかにすることなしに、結合します。
 
 
StrokeThickness プロパティは線幅を指定します。
1(デフォルト)
5
10
ピクセル(ドット)値で指定します。Single型ですので小数点以下の指定も出来、中間色っぽい補正が行われるようです。
この値は、Stroke.Thickness プロパティと同じになるようです。
 
StrokeCap プロパティは線端状態を指定します。
楕円であるため「線端」はありませんが、線種表現が変わってきます。
FMX.Types.TStrokeCap.scFlat
0 (デフォルト)
FMX.Types.TStrokeCap.scRound
1
この値は、Stroke.Cap プロパティと同じになるようです。
 
StrokeDash プロパティは線種を指定します。
FMX.Types.TStrokeDash.sdSolid
0 (デフォルト)
FMX.Types.TStrokeDash.sdDash
1
FMX.Types.TStrokeDash.sdDot
2
FMX.Types.TStrokeDash.sdDashDot
3
FMX.Types.TStrokeDash.sdDashDotDot
4
FMX.Types.TStrokeDash.sdCustom
5
(任意)
この値は、Stroke.Dash プロパティと同じになるようです。
上記は端点状態がフラットの場合です。
 
StrokeJoin プロパティは線と線の結合部をどのように描画するかを指定します。が、楕円には角がないので指定しても表現は変わりません。
FMX.Types.TStrokeJoin.sjMiter
0 (デフォルト)
FMX.Types.TStrokeJoin.sjRound
1
FMX.Types.TStrokeJoin.sjBevel
2
この値は、Stroke.Join プロパティと同じになるようです。
 
 
線の色等は、Stroke プロパティにて指定します。
内部の塗り潰しの色等は、Fill プロパティにて指定します。
Stroke、Fill 両プロパティは、ブラシ TBrush型ですが、ブラシの種類は、Stroke.Kind、Fill.Kind プロパティにて指定します。
bkBitmap外部ビットマップ イメージ
bkGradientグラデーション グラデーションの種類と色を設定できる
bkNoneなし(透明塗り潰し)
bkResource指定されたブラシのリソース
bkSolid固定色 Color プロパティを使用して設定できる
bkGrab指定コントロールのスナップショット(※無効)
 
 
Stroke.Kind = bkSolid 時
Color := #FF000000(Black、α=255)
Color := #80000000(Black、α=128)
 
透過させたい場合は、恒例の通り、Opacity プロパティを指定する事でも可能です(但し、塗り潰し部分も含めて全体が透過されます)。
 
Stroke.Kind = bkNone 時
透明状態になります。
 
Stroke.Kind = bkBitmap 時
Bitmap は 画像「」を使用
WrapMode = wmTile
WrapMode = wmTileOriginal
WrapMode = wmTileStretch
 
Stroke.Kind = bkGrab 時
Control に スナップショットするコントトール名を指定するようですが、どうも想定したように動作せず、透明状態になります。
 
Stroke.Kind = bkGradient 時
初期状態
初期状態から、下記画面を出してそのまま[OK]
 
Stroke.Kind = bkResource 時
フォーム起動時のイベントハンドラで
procedure TForm1.FormShow(Sender: TObject);
var
 myBrush: TBrushObject;
begin
 myBrush := TBrushObject.Create(Self);
 myBrush.Brush.Kind:=TBrushKind.bkGradient;
 myBrush.Brush.Gradient.Color := $FF0000FF;
 myBrush.Brush.Gradient.Color1:= $FFFF0000;
 Ellipse2.Stroke.Kind
  := TBrushKind.bkResource;
 Ellipse2.Stroke.Resource.StyleResource
  := myBrush;
end;
のようにした場合
(ヘルプより)
FMX.Types.TBrush.Resource
ブラシのパターンを定義するリソースを示します。
 
Resource は、ブラシのパターンや色を定義するために使用される、TBrushResource オブジェクトを指しています。TBrushResource.StyleResource プロパティを TBrushObject に設定します。これには、パターンの特性(色、種類、グラデーションなど)が保持されています。TBrushObject は、複数のコントロールを同じように塗るのに使用できます。
 
メモ: Resource プロパティを適切に使用するには、Kind プロパティを bkResource に設定する必要があります。
 
 
Fill.Kind = bkSolid 時
Color := #FF000000(Black、α=255)
Color := #80000000(Black、α=128)
 
透過させたい場合は、恒例の通り、Opacity プロパティを指定する事でも可能です(但し、エッジ部分も含めて全体が透過されます)。
 
Fill.Kind = bkNone 時
透明状態になります。
 
Fill.Kind = bkBitmap 時
Bitmap は 画像「」を使用
WrapMode = wmTile
WrapMode = wmTileOriginal
WrapMode = wmTileStretch
 
Fill.Kind = bkGrab 時
Control に スナップショットするコントトール名を指定するようですが、どうも想定したように動作せず、透明状態になります。
 
Fill.Kind = bkGradient 時
初期状態
初期状態から、下記画面を出してそのまま[OK]
 
Fill.Kind = bkResource 時
フォーム起動時のイベントハンドラで
procedure TForm1.FormShow(Sender: TObject);
var
 myBrush: TBrushObject;
begin
 myBrush := TBrushObject.Create(Self);
 myBrush.Brush.Kind:=TBrushKind.bkGradient;
 myBrush.Brush.Gradient.Color := $FF0000FF;
 myBrush.Brush.Gradient.Color1:= $FFFF0000;
 Ellipse2.Fill.Kind
  := TBrushKind.bkResource;
 Ellipse2.Fill.Resource.StyleResource
  := myBrush;
end;
のようにした場合
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/12/19
 2013/12/20
▼2013/12/21
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.