画像を任意の角度で回転させる
画像を回転するには、各ピクセルの座標を以下の式で変換します。

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