2024年8月23日金曜日

C#でフォームに画像を表示し、ボタンクリックで回転させるコード

概要

C#でWindows Formsアプリケーションを作成し、PictureBoxコントロールに画像を表示します。Buttonコントロールをクリックすると、画像が一定の角度で回転するプログラムを作成します。

必要なもの

  • Visual Studio (Community版でも可)

コード

C#
using System;
using System.Drawing;
using System.Windows.Forms;

namespace ImageRotation
{
    public partial class Form1 : Form
    {
        private Image originalImage; // 元の画像
        private double rotationAngle = 0; // 回転角度

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 画像を読み込む (パスは適宜変更)
            originalImage = Image.FromFile("your_image.jpg");
            pictureBox1.Image = originalImage;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 回転角度を更新
            rotationAngle += 30; // 30度ずつ回転

            // 回転後の画像を作成
            Bitmap rotatedImage = new Bitmap(originalImage.Width, originalImage.Height);
            using (Graphics g = Graphics.FromImage(rotatedImage))
            {
                g.TranslateTransfor   m((float)originalImage.Width / 2, (float)originalImage.Height / 2);
                g.RotateTr   ansform((float)rotationAngle);
                g.TranslateTransform(-(float)originalImage.Width / 2, -(float)originalImage.Height / 2);
                g.DrawImage(originalImage, new Point(0, 0));
            }

            // PictureBoxに表示
            pictureBox1.Image = rotatedImage;
        }
    }
}

コード解説

  1. 画像の読み込み:
    • Image.FromFileメソッドで画像ファイルを読み込み、originalImage変数に格納します。
  2. ボタンクリック時の処理:
    • rotationAngle変数に回転角度を加算します。
    • Bitmapクラスを使用して、新しい画像を作成します。
    • Graphicsクラスを使用して、画像の描画を行います。
      • TranslateTransformメソッドで回転の中心を画像の中心に設定します。
      • RotateTransformメソッドで画像を回転します。
      • DrawImageメソッドで回転した画像を描画します。
    • 回転後の画像をpictureBox1.Imageに設定し、PictureBoxに表示します。

注意点

  • 画像のパス: Image.FromFileメソッドの引数に、画像ファイルのパスを正しく指定してください。
  • 回転の中心: TranslateTransformメソッドで回転の中心を調整することで、画像の回転位置を変更できます。
  • パフォーマンス: 頻繁に画像を回転させる場合、パフォーマンスが低下する可能性があります。その場合は、ダブルバッファリングや非同期処理などを検討する必要があります。

拡張

  • 回転速度の調整: rotationAngleに加算する値を変更することで、回転速度を調整できます。
  • 回転方向の変更: rotationAngleの符号を変更することで、回転方向を変更できます。
  • アニメーション: Timerコントロールを使用して、一定間隔で画像を回転させることで、アニメーション効果を実現できます。

その他

  • Visual Studioで新しいWindows Formsプロジェクトを作成し、上記のコードを貼り付けます。
  • フォームにPictureBoxコントロールとButtonコントロールを配置します。
  • ButtonコントロールのClickイベントにbutton1_Clickメソッドを割り当てます。

このコードを実行すると、フォーム上に画像が表示され、ボタンをクリックするたびに画像が回転します。

より詳細なカスタマイズや、より高度な画像処理については、C#のドキュメントやサンプルコードを参考にしてください。

ポイント:

  • Graphicsクラス: Windows Formsでグラフィックス操作を行うための強力なクラスです。
  • 変換行列: TranslateTransformRotateTransformなどのメソッドは、変換行列を用いて座標変換を行います。
  • ダブルバッファリング: Flickering (ちらつき) を防止するために、ダブルバッファリングを使用することを検討してください。

この説明が、あなたのC#での画像処理の助けになれば幸いです。