【Class Library】


画像を90度回転
 画像を180度回転するのであれば、PaintPictureメソッドを使用するだけで 実現できますが、90度となると少しやっかいな処理が必要となります。 ここでは横方向に画像を1ピクセルずつ読み込んで、それを縦方向に1ピクセルずつ 描いていく方法を用いました。そのため時間がかかりますが、ごく簡単な コードで実現することができます。(本来ならば、メモリDC等の描画APIを 用いた方がいいんですけど全体のコードを簡単にするため、このような形にしています。)


★クラス内の処理内容---以下の処理が全処理です★

'============================================================
'TurnPic    ピクチャボックスの画像を90度回転させる
'------引数--------------------------------------------------
'Pic        回転させたい画像があるピクチャボックス
'TPic       回転させた画像を表示するピクチャボックス
'B_Width    画像の幅(ピクセル単位)
'B_Height   画像の高さ(ピクセル単位)
'TurnRight  回転方向 True-右,False-左
'============================================================
Public Sub TurnPic(Pic As Object, TPic As Object, _
                    B_Width As Long, _
                    B_Height As Long, TurnRight As Boolean)

    Dim i As Long, j As Long, k As Long
    Dim pc As Long

    '幅と高さを逆にする
    With TPic
        .Width = B_Height
        .Height = B_Width
    End With

    '右回転
    If TurnRight = True Then
        '横のラインを読み込む
        For i = 0& To B_Width - 1&
            k = B_Height - 1&
            '縦のラインを読み込む
            For j = 0& To B_Height - 1&
                pc = Pic.Point(i, j)
                TPic.PSet (k, i), pc
                k = k - 1&
            Next j
            DoEvents
        Next i
    '左回転
    Else
        '縦のラインを読み込む
        For j = 0& To B_Height - 1&
            k = B_Width - 1&
            '横のラインを読み込む
            For i = 0& To B_Width - 1&
                pc = Pic.Point(i, j)
                TPic.PSet (j, k), pc
        k = k - 1&
            Next i
            DoEvents
        Next j
    End If    
End Sub


★クラスの使用法★

    '右に回転
    Dim ctp As New CTurnPic
    Call ctp.TurnPic(Picture1, Picture2, Picture1.Width, _
                  Picture1.Height, True)


★使用上の注意★

 このクラスのプロシージャは、ピクセル単位で取り扱っています。従って、 FormとPictureオブジェのScaleModeが3でなければなりません。 また、PictureオブジェのAppearanceを0,BorderStyleを0にしておいて下さい。


(サンプルプログラムの動作確認)

機種 PC-9821V13S
OS Windows95
開発ツール Visual Basic Ver.4.0
更新日 99/10/10

ダウンロード TurnPic.lzh(2.39KB)

Visual Basic Ver.5.0,Ver.6.0でも問題なく動作すると思います。
なお、このコーナーに掲載されているプログラムコード、およびプログラムファ イルが原因で起きた損害などに関して一切の責任を負うことはできません。

★このコーナーに掲載されているプログラムコード、およびプログラムファ イルを無断で配布・転載することは、原則として禁止です。


Class Libraryインデックス トップページ


Copyright(C)1999-2000 Tomoya. All rights reserved.