プログラム 技術

Windowsフォームアプリで画像一覧画面を自作する

今月はWindowsフォームアプリ記事月間となります。
前回は自動で閉じるダイアログについてで、今回は画像一覧(スライドショーもどき)となります

名称バージョン
C#.Net 8.0
前回の記事
Windowsフォームアプリで自動で閉じるダイアログを実装する - ナストンのまとめ
Windowsフォームアプリで自動で閉じるダイアログを実装する - ナストンのまとめ

前回に引き続き今回もWindowsフォームアプリについての内容となります例えば、別のプログラムを起動したときなどに知らせ ...

対象記事へ

実数する

フォーム上にはTimerとPictureBox、FlowLayoutPanelを配置しておきます
対象フォルダ配下の指定した拡張子の画像データをすべて取得し、一番最初の画像をPictureBoxへ設定します

imageFiles.AddRange(Directory.GetFiles(imageFolderPath, "*.png"));
imageFiles.AddRange(Directory.GetFiles(imageFolderPath, "*.jpg"));
imageFiles.AddRange(Directory.GetFiles(imageFolderPath, "*.jpeg"));

imageFiles.Sort(); // 取得した画像をソート
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; // 画像を中心に表示する
pictureBox1.Image = ReSize(imageFiles[0]);

次に上記で取得した画像をFlowLayoutPanelに追加し、画像をクリックした際にその画像をPictureBoxに設定するようにします

// FlowLayoutPanelに画像を追加
foreach (var file in imageFiles)
{
    // サムネイル用のPictureBoxを作成
    var thumbnail = new PictureBox
    {
        Image = Image.FromFile(file),
        Width = 100,  // サムネイルの幅
        Height = 70, // サムネイルの高さ
        SizeMode = PictureBoxSizeMode.Zoom, // サムネイルのサイズ調整
        Margin = new Padding(1) // サムネイル間の余白
    };

    // サムネイルをクリックしたときのイベントを設定
    thumbnail.Click += (s, e) =>
    {
        pictureBox1.Image.Dispose();
        pictureBox1.Image = ReSize(file);
        imageIndex = Array.IndexOf(imageFiles.ToArray(), file); // 選択された画像のインデックスを設定
        ResetTimer();
    };

    thumbnail.BorderStyle = BorderStyle.Fixed3D; // 現在の画像を目立たせる

    // FlowLayoutPanelに追加
    flowLayoutPanel1.Controls.Add(thumbnail);
}
flowLayoutPanel1.AutoScroll = true; // スクロールバーを表示

これで実装が完了しました。実際に起動すると以下のようになります

で、下に表示されている画像をクリックするとその画像が表示されることが確認できます

最後に

これで画像一覧の画面を作成できました。注意点としては画像を開放しないとアプリ起動中はメモリを消費したままになります
また、サンプルでは時間で次の画像に切り替わるようにしています

サンプル
BlogSampleCodeProjects/Imagelist_Screen_WindowsForms at main · nasuton/BlogSampleCodeProjects · GitHub
BlogSampleCodeProjects/Imagelist_Screen_WindowsForms at main · nasuton/BlogSampleCodeProjects · GitHub

Project for sample code used in the blog.(Blogで記載しているサンプルコード ...

GitHubへ

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社(ADS)
アドバンスド・ソリューション株式会社(ADS)

Microsoft 365/SharePoint/Power Platform/Azure による DX コンサル・シス ...

サイトへ移動

PR

-プログラム, 技術
-,