|
線だけでは面白くありません。Delphiでは、以下のような図形が作図出来るようになっています。
★点
点(1ドット)をキャンバスに作図します。
Image1.Canvas.Pixels[200,100] := clBlue; |
座標(200,100)(X座標200,Y座標100)に青色の点を描きます。
また、
col := Image1.Canvas.Pixels[200,100]; |
のように書くと、座標(200,100)に描かれている色を取得する事が出来ます。
★四角形
四角形をキャンバスに作図します。
Image1.Canvas.Rectangle(10,20,200,100); |
のように書くと、左上隅(10,20)、右下隅(200,100)の四角形を描きます。
★角の丸い四角形
角の丸い四角形をキャンバスに作図します。
Image1.Canvas.RoundRect(10,20,200,100,3,5); |
のように書くと、左上隅(10,20)、右下隅(200,100)、角の幅3・高さ5のRの付いた四角形を描きます。
★楕円(円)
楕円をキャンバスに作図します。横長さと縦長さを同じにすれば円の作図になります。
Image1.Canvas.Ellipse(10,20,200,100); |
のように書くと、左上隅(10,20)、右下隅(200,100)の四角形に内接する楕円を描きます。
★楕円弧(円弧)
楕円弧をキャンバスに作図します。横長さと縦長さを同じにすれば円弧の作図になります。
Image1.Canvas.Arc(10,20,200,100,180,20,150,100); |
のように書くと、左上隅(10,20)、右下隅(200,100)の四角形に内接する楕円のうち、始点(180,20)から反時計回り方向に終点(150,100)までの弧を描きます。
この始点・終点の座標は、楕円上になくても構いません。中心点からの角度が計算されて楕円弧となります。
★扇形
扇形をキャンバスに作図します。
楕円弧Arcと、中心点から始点への線分、中心点から終点への線分、から成る扇形の作図となります。
Image1.Canvas.Pie(10,20,200,100,180,20,150,100); |
のように書くと、左上隅(10,20)、右下隅(200,100)の四角形に内接する楕円のうち、始点(180,20)から反時計回り方向に終点(150,100)までの弧、による扇形を描きます。
★弓形
弓形をキャンバスに作図します。
楕円弧Arcと、その楕円弧上の始点から終点への線分(弦)、から成る弓形の作図となります。
Image1.Canvas.Chord(10,20,200,100,180,20,150,100); |
のように書くと、左上隅(10,20)、右下隅(200,100)の四角形に内接する楕円のうち、始点(180,20)から反時計回り方向に終点(150,100)までの弧、による弓形を描きます。
★ポリライン:連続線
連続線をキャンバスに作図します。
Image1.Canvas.Polyline([Point(10,10),Point(100,40),Point(150,120),Point(140,200)]); |
のように書くと、連続線(10,10)→(100,40)→(150,120)→(140,200)を描きます。
★ポリゴン:多角形
任意の多角形をキャンバスに作図します。
Image1.Canvas.Polygon([Point(10,10),Point(100,40),Point(150,120),Point(140,200)]); |
のように書くと、多角形(10,10)→(100,40)→(150,120)→(140,200)→(10,10)を描きます。最初と最後の点は繋げられて閉じた図形になります。
★四角形領域を塗り潰し
四角形領域の塗り潰しを行います。
Image1.Canvas.FillRect(Rect(10,20,200,100)); |
のように書くと、左上隅(10,20)、右下隅(200,100)の四角形領域を指定されたブラシで塗り潰します。
★ある境界内の領域を塗り潰し
指定された色の境界線で囲まれた領域内の塗り潰しを行います。
Image1.Canvas.FloodFill(50,80,clRed,fsBorder); |
のように書くと、座標(50,80)を始点として全方向に赤色(clRed)の境界線のところまで塗り潰します。また、
Image1.Canvas.FloodFill(50,80,clBlude,fsSurface); |
のように書くと、座標(50,80)を始点として全方向に青色(clBlue)が続く限り、塗り潰します。
★ブラシ(Brushプロパティ)
塗り潰し機能のFillRectやFloodFill、その他、閉じた図形である、四角形・角の丸い四角形・楕円・扇形・弓形・ポリゴンも可能ですが、ブラシを指定する事によって、塗り潰す色や塗り潰す模様(スタイル)などを指定する事が出来ます。
@色(Colorプロパティ)
塗り潰し色は、以下のような感じで指定します。
Image1.Canvas.Brush.Color := clRed; |
「clRed」というのは「赤色」を示しています。ペンの色と同様です。
clAqua | 空色 |
| clMedGray | 50% 灰色 |
clBlack | 黒色 |
| clMoneyGreen | ミントグリーン |
clBlue | 青色 |
| clNavy | 濃紺色 |
clCream | 淡黄色 |
| clOlive | 黄緑色 |
clDkGray | 灰色(暗) |
| clPurple | 紫色 |
clFuchsia | 赤紫色 |
| clRed | 赤色 |
clGray | 灰色 |
| clSilver | 銀色 |
clGreen | 緑色 |
| clSkyBlue | スカイブルー |
clLime | 濃緑色 |
| clTeal | 暗青緑色 |
clLtGray | 灰色(明) |
| clWhite | 白色 |
clMaroon | 栗色 |
| clYellow | 黄色 |
Colorプロパティは、TColor型の値で入れる、という事になっていますが、これは普通の整数値(Integer型)と同じです。Colorプロパティに直接、$00FFAA55 等のような値を入れる事も出来ます。この数値は、最初の「$」は16進数値を示しており、青(FF)、緑(AA)、赤(55)、の各色成分を示しています。(最初の「00」は無視)ですので、
色=青色(0〜255)×65536+緑色(0〜255)×256+赤色(0〜255)
で指定出来ますが、面倒であれば、RGB関数を使って、
色=RGB(青色(0〜255),緑色(0〜255),赤色(0〜255))
で指定する事も出来ます。
Image1.Canvas.Brush.Color := RGB(0,0,255); |
これにより、1677万色フルカラーを使う事が出来ます。(Windowsカラーが256色やHiColor(65536色)の時には、表現出来ない色は自動的にディザリング表示されます)
Aスタイル(Styleプロパティ)
塗り潰す模様等を指定します。
Image1.Canvas.Brush.Style := bsCross; |
「bsCross」というのは「十字ハッチ」を示しています。
(Delphi6ヘルプより)
「bsClear」は、塗り潰しをしない、という意味です。
文字作図の際の文字の背景もブラシが有効になります。
B模様画像(Bitmapプロパティ)
8×8の Bitmap画像で塗り潰す事が出来ます。スタイルプロパティ以外のパターンを利用したい場合等で利用されます。
var
b: TBitmap;
begin
b := TBitmap.Create;
try
b.LoadFromFile('パターン.bmp');
Image1.Canvas.Brush.Bitmap := b;
Image1.Canvas.FillRect(Rect(0,0,100,100));
except
;
end;
Image1.Canvas.Brush.Bitmap := nil;
b.Free;
end; |
多少面倒ですが、上記のようにして利用出来ます。
それでは、今度は、座標値を手入力出来るようにしましょう。
◆Panelの大きさをプログラム実行時にドラッグ変更させたい場合には、[Additional]内の「Splitter」を使います。コンポーネントの配置手順は、ステータスバー→パネル→パネルのAlignをalRightに指定→Splitter→SplitterのAlignをalRightに指定→イメージ→イメージのAlignをalClientに指定、というようになります。
◆パネルの上に、文字(ラベル Label)や入力欄(エディット Edit)、ボタンなどを置く場合には、パネルをクリックして選択状態にしてからコンポーネントを配置して下さい。でないと、他のコンポーネントに隠れてしまったり、パネルと一緒に移動してくれなかったり、等のおかしな事になってしまいます。
◆Editコンポーネントに入れた内容は、Textプロパティで文字として取り出せます。各値は整数値ですので、文字から整数値に変換するのに、ここでは、関数StrToInt()を使うようにしておきます。どういう動作をするかはプログラムとその動きを見て確認して下さい。
◆入力選択(コンボボックス ComboBox)は、Styleプロパティが初期状態の「csDropDown」の場合には、手入力が出来、予め入れてある項目から選択する事も出来ますが、これを「csDropDownList」にすると、手入力が出来ないようになります。また、この場合、Textプロパティでどんな文字を選んだのかを判定させるのではなく、ItemIndexプロパティで何個目を選んだのかを判定させる事になります。なお、選択項目はオブジェクトインスペクタでItemsプロパティ内に入れておきます。
【ソース・プログラム】
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
▲PREV
▼NEXT
|