ベクター エンジンを導入した GR32 の最新 (ベータ) バージョン 2.0 を使用することをお勧めします。これにより、既存のコードを引き続き使用して、既存のピクセル イメージの上に描画されたベクター グラフィックを追加できます。
これを行うには、まず最新の GR32 バージョンに切り替えます。コードはオープン SVN リポジトリから取得できます。トランクは次の場所にあります。
https://sourceforge.net/p/graphics32/code/HEAD/tree/trunk/
SVN を使用する場合 (推奨)、以下を使用してコードをチェックアウトできます。
svn checkout svn://svn.code.sf.net/p/graphics32/code/trunk graphics32-code
または、エクスプローラーの統合に TortoiseSVN を使用します。
コードを取得したら、探索を開始できます。ベクトル エンジンの使用方法を示す多くの例があります。Examples\Drawing の下の例を見てください。
特に、マウスでポリゴンを作成 (および操作) できる「ポリゴン」の例を見てください (単純な三角形を作成するには 3 回のクリックが必要です)。
独自のベクター グラフィックを作成するには、次のようなコードを使用できます。
uses
..., GR32_Polygons, GR32_Paths, GR32_Brushes;
var
Canvas: TCanvas32;
Stroke: TStrokeBrush;
begin
// use a higher level abstraction class to generate the polygons
Canvas := TCanvas32.Create(Image.Bitmap);
// add a stroke brush and specify the color and width
Canvas.Brushes.Add(TStrokeBrush);
Stroke := TStrokeBrush(Canvas.Brushes[0]);
Stroke.FillColor := SetAlpha(clBlack32, 200);
Stroke.StrokeWidth := 2;
// begin a path
Canvas.Path.BeginPath;
// specify 3 vertices
Canvas.Path.MoveTo(10, 10);
Canvas.Path.LineTo(20, 90);
Canvas.Path.LineTo(60, 40);
// close path
Canvas.Path.ClosePath;
Canvas.Path.EndPath;
end;
さらに、低レベル API を使用できます。これには、ユニット「GR32_Polygons」のみが必要です。同じコードは次のようになります。
uses
..., GR32_Polygons;
var
Points: array of TFloatPoint;
begin
SetLength(Points, 3);
// specify 3 vertices
Points[0] := FloatPoint(10, 10);
Points[1] := FloatPoint(20, 90);
Points[2] := FloatPoint(60, 40);
// draw poylgon with certain color and width
PolylineFS(Image.Bitmap, Points, SetAlpha(clBlack32, 200), True, 2.0);
end;
これは最初は単純に見えますが、ベクター エンジンでの描画が複雑になるほど、少し難しくなります。
GR32_VectorUtils ユニットの補助関数を使用すると、各頂点を個別に入力する手間を省くことができます。それが含まれています
Rectangle(const R: TFloatRect): TArrayOfFloatPoint;
これは、アプリケーションに最も役立つはずです。
必要に応じて、ポリゴンが描画される前に適用される変換を追加することもできます。
同じ例は、AggPas コードを使用して完全に記述することもできます。高速でもエレガントでもありませんが、ただ違うだけです。