画像を任意の角度で回転させる
画像を回転するには、各ピクセルの座標を以下の式で変換します。
X = Cos(kakudo) * (x - cx) + Sin(kakudo) * (y - cy) + cx
Y = Sin(-kakudo) * (x - cx) + Cos(kakudo) * (y - cy) + cy
x、yは現在の座標、X、Yは回転後の座標、
cx、cyは中央の座標、kakudoは回転する角度をあらわしています。
この式では、画像の中央を原点まで移動して回転しています。
次のコードは回転のサンプルです。
しかし、これでは回転する角度によっては隙間があいてしまいます。
このページからダウンロードできるサンプルコードでは、
隙間があかないようにしてあります。
'回転する
For i = 0 To w - 1
For j = 0 To h - 1
'座標を求める
x = Cos(kakudo) * (i - cx) + Sin(kakudo) * (j - cy) + cx
y = Sin(-kakudo) * (i - cx) + Cos(kakudo) * (j - cy) + cy
'座標が範囲内にあるかチェック
If x >= 0 And x < w And y >= 0 And y < h Then
'色をセット
pix2(x, y) = pix(i, j)
End If
Next j
Next i
サンプルコードダウンロード(約3KB)
BACK