座標系には以下の3種類がある。
|
![]() |
|
![]() |
|
|||
左上隅が原点。 画素単位。 |
ページ変換 | 左上隅が原点。 単位はmmなどに 変更可能。 |
ワールド変換 | 自由に設定できる。 描画メソッドでは この座標系の座標 値を使う。 |
既定値は,ページ座標もワールド座標もデバイス座標と同じになっている。
描画メソッドは,ワールド座標を使っている。
実際に描画されるときに,ワールド変換→ページ変換が行われ,最終的にはデバイス座標に直される。
(注意)コントロールのTop, Left, Width, Height などのプロパティは,デバイス座標(画素単位)で与える。
ページ座標を指定するプロパティには,PageUnit
とPageScale
がある。
PageUnit
ページ座標で使用する長さの単位をGraphicsUnit
列挙体で指定する。
Display
1/75 インチを長さの単位に指定 Document
ドキュメント単位 (1/300 インチ) を長さの単位に指定 Inch
インチを長さの単位に指定 Millimeter
ミリメートルを長さの単位に指定 Pixel
デバイス ピクセルを長さの単位に指定 Point
プリンタ ポイント (1/72 インチ) を長さの単位に指定 World
ワールド単位を長さの単位に指定
※インチやmmは,印刷したときの長さで定義されている。
PageScale
ページ座標で使用する長さの単位の倍率を単精度実数で指定する。
例えば,PageUnit=GraphicsUnit.Millimeter
で,PageScale=2
のときは,長さの単位が2mmになる。
ワールド座標を設定するメソッドには,以下のものがある。
void ScaleTransform(float sx, float sy)
倍率変換 void RotateTransform(float fAngle)
回転変換 void TranslateTransform(float dx, float dy)
平行移動
これらの変換の組み合わせは,アフィン変換と呼ばれる。
これらの変換を複数行うときは,その順序により結果が異なるので注意が必要。
なお,すべての変換をクリアするために,
void ResetTransform()
というメソッドが用意されている。変換の定義を開始するときにも,念のために実行しておくとよい。
スケール変換において,y方向の倍率を負の数にすると,y軸が上向きにとられることになる。
例1 最初に平行移動TranslateTransform(100,100)
を行い,次にスケール変換ScaleTransform(1,-1)
を行った場合。
例2 最初にスケール変換ScaleTransform(1,-1)
を行い,次に平行移動TranslateTransform(100,100)
を行った場合。