写真を自動的に回転させてみよう
前回はピクセルの座標を直接書き替えて写真を回転させましたが、今回はpygame.transform.rotozoom() の回転機能を使って、写真を自動的に回転させてみましょう。
今回のプログラムでは最初に写真を縮小した画面オブジェクトを作成して、以降はその画面オブジェクトを回転させます。
傾きをプラスにすると反時計回り、マイナスにすると時計回りになります。
写真を自動的に回転させるプログラム
以下のプログラムは、傾きを1度ずつずらして写真を回転させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
### インポート import pygame from pygame.locals import * ### 定数 WIDTH = 640 # 幅 HEIGHT = 640 # 高さ ### モジュール初期化 pygame.init() ### 時間オブジェクト生成 clock = pygame.time.Clock() ### 画面設定 surface = pygame.display.set_mode((WIDTH,HEIGHT)) ### 写真読み込み src = pygame.transform.rotozoom(pygame.image.load("photo.jpg").convert(), 0, 0.2) ### 回転角度初期化 angle = 0 ### 無限ループ while True: ### 写真回転 img = pygame.transform.rotozoom(src, angle, 1) ### 画像サイズ保存 img_w = img.get_width() img_h = img.get_height() ### 画面初期化 surface.fill((0,0,0)) ### 写真表示 surface.blit(img, (int((WIDTH-img_w)/2),int((HEIGHT-img_h)/2))) ### 画面更新 pygame.display.update() ### フレームレート設定 clock.tick(30) ### 回転角度設定 if angle > -359: angle -= 1 else: angle = 0 ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: break else: continue ### whileループ終了 break ### 終了処理 pygame.quit() |
プログラムを実行すると、写真が時計回りに回転します。