9.ピクチャーを90度毎に回転させて表示(VBの機能で) |
1.ピクチャーを90度毎に回転させて表示(VBの機能で) 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.ピクチャーを90度毎に回転させて表示(VBの機能で) |
Option Explicit 'SampleNo=085 2002.05.17 Private Sub Form_Load() Dim i As Integer For i = 0 To 4 'ピクセル単位に設定 Picture1(i).ScaleMode = 3 Picture1(i).AutoRedraw = True Set Picture1(i).Picture = LoadPicture("..\AN050.GIF") Next i End Sub Private Sub Command1_Click() Dim co1 As Double, co2 As Double, co3 As Double, co4 As Double Dim si1 As Double, si2 As Double, si3 As Double, si4 As Double Dim x1 As Long, x2 As Long, x3 As Long, x4 As Long Dim y1 As Long, y2 As Long, y3 As Long, y4 As Long Dim x As Long, y As Long Dim c As Long Dim i As Integer co1 = Cos(1.57) '90 * 3.1417 / 180 si1 = Sin(1.57) co2 = Cos(3.14) '180 * 3.1417 / 180 si2 = Sin(3.14) co3 = Cos(4.71) '270 * 3.1417 / 180 si3 = Sin(4.71) co4 = Cos(0.785) '45 * 3.1417 / 180 si4 = Sin(0.785) 'コントロールの中心を原点(0,0)に設定 '正方形で割り切れる寸法が望ましい Picture1(0).ScaleLeft = -Picture1(0).ScaleWidth \ 2 Picture1(0).ScaleTop = -Picture1(0).ScaleHeight \ 2 Picture1(1).ScaleLeft = -Picture1(1).ScaleWidth \ 2 Picture1(1).ScaleTop = -Picture1(1).ScaleHeight \ 2 Picture1(2).ScaleLeft = -Picture1(2).ScaleWidth \ 2 Picture1(2).ScaleTop = -Picture1(2).ScaleHeight \ 2 Picture1(3).ScaleLeft = -Picture1(3).ScaleWidth \ 2 Picture1(3).ScaleTop = -Picture1(3).ScaleHeight \ 2 Picture1(4).ScaleLeft = -Picture1(4).ScaleWidth \ 2 Picture1(4).ScaleTop = -Picture1(4).ScaleHeight \ 2 '一旦ピクチャーをクリヤ For i = 1 To 4 Set Picture1(i).Picture = LoadPicture() Next i For x = -Picture1(0).ScaleWidth \ 2 To Picture1(0).ScaleWidth \ 2 For y = -Picture1(0).ScaleHeight \ 2 To Picture1(0).ScaleHeight \ 2 x1 = x * co1 - y * si1 y1 = x * si1 + y * co1 x2 = x * co2 - y * si2 y2 = x * si2 + y * co2 x3 = x * co3 - y * si3 y3 = x * si3 + y * co3 x4 = x * co4 - y * si4 y4 = x * si4 + y * co4 '図のカラー情報の読み取り c = Picture1(0).Point(x, y) '読み取ったカラー情報を角度を変更して描画 If c <> -1 Then Picture1(1).PSet (x1, y1), c Picture1(2).PSet (x2, y2), c Picture1(3).PSet (x3, y3), c Picture1(4).PSet (x4, y4), c End If Next y Next x End Sub 図1.上記実行結果 敢えて、VB6.0の標準の機能だけで実現しましたが、実用には堪えませんので、実装される場合は、Win 32 API をした画像を高速に90度毎に回転表示する方法(VB6.0)を使って下さい。 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
1.ピクチャーを90度毎に回転させて表示(VBの機能で) |