ホーム ] 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 / グラフックス系

G0302 文字の自由変形

最終更新:2006/11/12 再掲

●解説

 非線形変換の一種であるWarpを使い、任意の四角形の中に文字列を描画する。

●原理 

  Warpは原型である矩形を、任意の4点で囲まれた四辺形に変換するものである。下図参照。捩れも指定できるが、結果は予測できないので避けた方が良い。但し、反転(例えば、P0、P1をP2,P3より下にすれば上下反転となる)は構わない。デスティネーションの四辺形はPoint配列で、その順序が決まっている。P3がなければ、平行四辺形として処理される。

●方法 

 WarpはDrawではなく、GraphicsPathに対する座標変換メソッドである。以下の手順で実施する。 

  1. 文字列をGraphicsPathにする

  2. そのパスの外接矩形を求める

  3. 変形後の点を設定し、順序と原型との点との関係を注意して配列にする

  4.  パスに対してWarpメソッドを施す。この時、パスの外接矩形が必要となる。

  5. パスを描画する。これでWarpされた文字が描かれる。

●事例 

    gはGraphicsとする。FはFontとする。dsは変形したい文字列とする。
   
Xc、 Ycは文字列の基準点とする。
  posはPointF()で、変形後の4点が入っているとする。

    fmt.Alignment = StringAlignment.Center
    fmt.LineAlignment = StringAlignment.Center
    Dim pa As New GraphicsPath()
    Dim re As RectangleF
    pa.Reset()
    pa.AddString(ds, New FontFamily("MSPゴシック"), CInt(FontStyle.Regular), f.GetHeight(g), New PointF(Xc, Yc), fmt)
    pa.CloseFigure()
    re = pa.GetBounds               
パスの外接矩形を求める
    pa.Warp(pos, re)
    g.FillPath(Brushes.Red, pa)
    pa.Dispose()

 


上記コードでWarpした結果