画面上(のPictureBox)をクリックしたときの処理

ウィンドウ画面上をマウスでクリックしたときに、表示されている画像が90度回転されるような処理を実現する。
まず、PictureBoxを配置して画面全体を覆うようにする。ここに画像ファイルを貼り付ける。画像ファイルは外部ファイルとしてパスで指定する。PictureBoxが画面全体を覆っているので、画面上でのクリックはself.Clickではなく、self._pictureBox1.Clickで探知されることになる。

ソースコードは以下の通り。

import System.Drawing
import System.Windows.Forms

from System.Drawing import *
from System.Windows.Forms import *

class MainForm(Form):
    def __init__(self):
        self.InitializeComponent()
   
    def InitializeComponent(self):
        self._pictureBox1 = System.Windows.Forms.PictureBox()
        self._pictureBox1.BeginInit()
        self.SuspendLayout()
        #
        # pictureBox1
        #
        self.im = Image.FromFile("sample2.PNG")
        self._pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill
        self._pictureBox1.Image = self.im
        self._pictureBox1.Location = System.Drawing.Point(0, 0)
        self._pictureBox1.Name = "pictureBox1"
        self._pictureBox1.Size = System.Drawing.Size(284, 262)
        self._pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage
        self._pictureBox1.TabIndex = 0
        self._pictureBox1.TabStop = False
        #
        # MainForm
        #
        self.ClientSize = System.Drawing.Size(284, 262)
        self.Controls.Add(self._pictureBox1)
        self.Name = "MainForm"
        self.Text = "test"
        self._pictureBox1.EndInit()
        self.ResumeLayout(False)
       
        self._pictureBox1.Click += self.fm_Click
       
    def fm_Click(self, sender, e):
        self.im.RotateFlip(RotateFlipType.Rotate90FlipNone)
        self._pictureBox1.Invalidate()

画像がクリックされたときの処理はfm_Clickに記述する。画像ファイルの90度回転と再描画を行う。
実行例は以下の通り。