ホーム ] TIPS ウィンドウズ系 ] TIPS グラフィックス系 ] TIPS メルチメディア系 ] TIPS 理数系 ] TIPS 総覧 ]

上へ
G0001 色名一覧
G0002 アルファブレンド
G0003 カラーマップを作る
G0101 曲線の数値化
G0102 曲線長を測る
G0103 曲線の接線・法線
G0104 曲線のスムージング
G0201 図形の回転
G0202 領域の認識
G0301 文字の線形変換
G0302 文字の自由変形
G0303 文字の極座標変換
G0304 曲線に沿った文字列
G0305 飾文字-中抜き
G0306 飾文字-縁取り
G0307 飾文字-ドロップダウンシャドウ
G0501 画像の線形変換
G0502 画像の透明化
G0503 画像の任意形状切出し
G0504 画像の回転
G0505 画像の高速処理化

VB.NET2005 TIPS / グラフィックス系

G0101 曲線の数値化

最終更新:2006/11/12 修正して再掲

●解説

 任意の曲線(自由曲線)は節となる点を指定して、DrawCurveでカーディナル曲線として描けるが、時としてこの曲線を何らかの変換や演算に使用したい場合がある。数式では表せないので点集合として数値化すると変換や演算に使用できる。 

●原理 

 DrawCurveは描画された図形しか残らないので、GraphicPathを利用し、細分化する。

●方法 

 以下の手順で行う。 

  1.  節となる点を生成する

  2. GraphicPathを生成する

  3. そのGraphicPathにCurveを追加する

  4. CurveをFlattenにて直線化する

  5. 直線化されたものをPathPointsで点集合化する

 Flattenはスプラインされた部分を細分化して直線の集合にするメソッドで、これを省くとカクカク (単なる折線)とした結果となってしまう。

●実例 

  Dim pp() As PointF         ‘ppに節となる点があるとする

  Dim pa As New GraphicsPath()
  pa.AddCurve(pp)                    'ppに従ってpaにカーディナル曲線が生成される
  pa.CloseFigure()
  pa.Flatten()

 
Dim pps() As PointF = pa.PathPoints   ppsに細分化された点集合を得られる