Windowsフォームに画像を表示するのに、
画像ファイルであれば特に何も考えずに表示できますが、
それ以外のファイルでサムネイルを表示する方法を試してみました。
プログラムは新規で、新たにプロジェクトを作成します。
VisualStudio2017で新しく WindowsForm プロジェクトを作成します。
今回は「SampleThumbnailView」としました。
画面にラベル、テキストボックス、ボタン、ピクチャーボックスを並べます。
ファイルからサムネイルを作るために、別途パッケージをインストールします。
ソリューションエクスプローラーで、「参照」を右クリック>「NuGetパッケージの管理」メニューを選択します。
WindowsAPICodePackを入力、表示された「Microsoft-WindowsAPICodePack-Shell」をインストールします。
変更のプレビューが表示される場合は「OK」ボタンをクリックします。
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using Microsoft.WindowsAPICodePack.Shell;
namespace SampleThumbnailView
{
/// <summary>
/// メイン画面
/// </summary>
public partial class Form1 : Form
{
/// <summary>
/// 画面表示時の処理
/// </summary>
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 参照ボタンクリックイベント.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_ref_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
ofd.Filter = "すべてのファイル(*.*)|*.*";
ofd.FilterIndex = 2;
ofd.Title = "開くファイルを選択してください";
ofd.RestoreDirectory = true;
ofd.CheckFileExists = true;
ofd.CheckPathExists = true;
//ダイアログを表示する
if (ofd.ShowDialog() == DialogResult.OK)
{
//OKボタンがクリックされたとき、選択されたファイル名を表示する
txb_file.Text = ofd.FileName;
}
}
/// <summary>
/// 表示ボタンクリックイベント.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_read_Click(object sender, EventArgs e)
{
pcb_preview.Image = CreateThumbnail(txb_file.Text, 1);
}
/// <summary>
/// サムネイル画像を生成します.
/// </summary>
/// <param name="path"></param>
/// <param name="scale"></param>
/// <returns></returns>
private Bitmap CreateThumbnail(string path, int scale)
{
// ファイルが存在した場合
FileInfo fi = new FileInfo(path);
if (fi.Exists)
{
ShellFile shellFile = ShellFile.FromFilePath(path);
Bitmap bmp = shellFile.Thumbnail.Bitmap;
int w = (int)(bmp.Width * scale);
int h = (int)(bmp.Height * scale);
return bmp;
}
// ファイルが存在しない場合はデフォルト表示
return SampleThumbnailView.Properties.Resources.Message;
}
}
}
初期表示、「参照」ボタンをクリックします。
今回は試しに Json ファイルを指定してみます。
サムネイルが表示されました。
存在しないファイルを指定した場合
デフォルトの画像を表示(エラー)するようにしてみました。
単発のネタです。(多分)
あまり利用シーンは少ないかもしれませんが、何かのお役に立てれば。
ではでは。
ソースはこちら。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント