4

私はこれを利用TCanvas.Polygon()しており、ポリゴンのサイズを縮小する方法を知りたいと思っています. 型を宣言しTPoints: Array of TPoint;、呼び出すときにそれを使用していTCanvas.Polygon()ます。

問題は、この関数を作成する必要がある場合、各ポイントを移動する必要がある方向をどのように認識するかです (ポリゴンの残りの部分との比率に基づいて)。

たとえばTPoints、5 つの尖った星を表す点の配列 ( ) を作成し、それを 2 ピクセル縮小する必要がある場合、どのようにして点を移動する方向を知るのでしょうか?

最終的な目的は、ポリゴンのグラデーションを実装することです。これを実行するループがあり、a) 色がわずかに調整され、b) ポリゴン ポイントが数ピクセル縮小される必要があり、c) ポリゴンが描画されます (以前に描画されたものよりも小さくなります)。したがって、グラデーションを作成します。

4

2 に答える 2

16

ポリゴンのオフセットを行う方法を探しているようです。指定された単位数(ピクセル)でポリゴンを縮小または拡大します。私のクリッパーライブラリ(Delphi、C ++、C#で記述)はポリゴンオフセットを行います。「ポイントが移動する方向」(つまり、縮小または拡大)は、 OffsetPolygons関数に指定された「delta」パラメーターの符号(正と負)に依存します。

于 2012-05-07T04:23:37.463 に答える
0

これに対処する「古典的な」方法は「変換行列」です。

Delphi XE2を使用しているようですが、Firemonkeyを見たことがありますか?2D変換はライブラリの標準的な部分だと思います。

于 2012-05-07T01:18:31.547 に答える