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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] 扇形(Pie)2013/12/23
 
前回は [Shapes]内の「円弧」(Arc)について見てみました。
今回は、同じく[Shapes]内の「扇形」(Pie)について見てみます。
 
 
[Shapes]内
FMX
 
ヘルプより。
TPie は、2D の扇形を定義したものです。 TPie は、TEllipse の一部として描画されます。TControl を継承しており、コントロールを作成するためにスタイルで使用できます。
 
TPie オブジェクトは、TEllipse オブジェクトのうち、StartAngle と EndAngle の 2 つの角度の半径で挟まれた部分です。
 
TEllipse オブジェクトの境界を表す四角形 ShapeRect、Scale で指定される倍率、回転軸 RotationCenter、回転角 RotationAngle を使って、TPie の全体的なサイズ、形、および位置が定義されます。
 
TPie は、Paint メソッドを使って、輪郭を描画し、図形の背景を塗りつぶします。
 
Paint では、TPie オブジェクトの Stroke、StrokeThickness、StrokeCap、StrokeDash、StrokeJoin の各プロパティで定義されたプロパティ、色、および透過度を持つ描画ペンを使って、輪郭を描画します。
 
Paint では、TPie オブジェクトの現在の Fill プロパティで定義されたプロパティ、色、および透過度を持つ描画ブラシを使って、背景を塗りつぶします。
 


 
StartAngle
このパイオブジェクトの角度の始まりを示します。
 
角度の始まり StartAngle は、X 軸から時計回りに測ります。
 
StartAngle を EndAngle と一緒に使用すると、このパイをどのように描画し塗りつぶすのかを指定することができます。
 
FMX.Types.TControl.RotationAngle は、X 軸を回転させる点に留意してください。
EndAngle
このパイ オブジェクトの角度の終わりを示します。
 
角度の終わり EndAngle は、角度の始まり StartAngle から時計回りに測ります。
 
EndAngle を StartAngle と一緒に使用すると、このパイをどのように描画し塗りつぶすのかを指定することができます。
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 で、線のセグメント群を、セグメント間でシャープな角をなめらかにすることなしに、結合します。
 
 
まず最初の確認は、円弧(Arc)コンポーネント同様、EndAngle プロパティが、終了角なのか、円弧角(中心角)なのか、という事です。これは、StartAngle プロパティを変更すればすぐに分かります。
StartAngle = 0
EndAngle = -90
(デフォルト)
StartAngle = 90
EndAngle = -90
StartAngle = 180
EndAngle = -90
StartAngle = 270
EndAngle = -90
角度は時計回りがプラスとなります。数学グラフやCADでは通常、反時計回りがプラスになりますので、逆ですね。というわけで、円弧(Arc)コンポーネントとは異なり、EndAngle プロパティが、終了角であるという事が分かります。しかし扇形は、
  StartAngle プロパティ値 < EndAngle プロパティ値 = 時計回り
  StartAngle プロパティ値 > EndAngle プロパティ値 = 反時計回り
に作図されるようです。
StartAngle = 30
EndAngle = 270
StartAngle = 30
EndAngle = -90
なお、このプロパティには入力範囲制限は無いようです。StartAngle プロパティの値と EndAngle プロパティの値が同じ角度である場合、画面には中心の点だけが表示されます。
 
 
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;
 Arc2.Stroke.Kind
  := TBrushKind.bkResource;
 Arc2.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;
 Pie2.Fill.Kind
  := TBrushKind.bkResource;
 Pie2.Fill.Resource.StyleResource
  := myBrush;
end;
のようにした場合
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/12/22
 2013/12/23
▼2013/12/24
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.