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

G0201 図形の回転

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

●解説

 VB6ではポリゴンを表すポイント集合体にアフィン変換を行い、APIで描画させるなどしていた。
 .NETでは、Graphicsオブジェクトにて、アフィン変換などの行列変換の行列を持つことができ、それを座標系に適用できるようになっている。平行移動、拡大・縮小、回転などが自由にできる。 


45度回転した楕円

●原理

 Graphicsオブジェクトには座標のオブジェクトがあり、そのなかのMatrixオブジェクトは座標に関する行列変換を行う。Matrixに変換したい行列を登録し、座標に適用すると、その後のGraphicsへの描画は、その変換が施される。

●方法 

 回転では角度のほか、回転中心を制御できないといけない。このためには局所的な回転ができる、RotateAt()メソッドを利用する。名称から想像できるように、ある点を指定して、それを中心に回転させるものである。

●実例 

    gはGraphicsとする、 

      Dim p As New Pen(Color.Red,2)
      Dim cmx As Matrix = g.Transform
  '現在の座標系の変換行列を保存する。(絶対必要)
      Dim pmx As New Matrix()            '新しい行列を確保
      Dim rp As New PointF(350, 250)     '回転中心をPointFで定義
      g.ResetTransform()                     '現在の座標系をリセットする
      pmx.RotateAt(45, rp, Drawing2D.MatrixOrder.Append)       '新しい行列に45度回転の定義を追加
      g.Transform = pmx                        '座標系に行列を適用させる
      g.DrawEllipse(p, New RectangleF(200, 200, 300, 100))      '楕円を中心で回転ざせる
      p.Dispose()
      pmx.Dispose()
      g.Transform = cmx                      '元の座標系に戻す(絶対必要)