gifファイルをエクスプローラーからドラッグアンドドロップすることでアニメーションを表示します。
実行環境構築
プロジェクトの作成
mkdir プロジェクト名
cd プロジェクト名
dotnet new winforms
code .
ソースプログラム
namespace AnimeGif;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Text = "AnimeGif";
Size = new System.Drawing.Size(850, 800);
var picbox = new PictureBox {
SizeMode = PictureBoxSizeMode.Zoom,
Dock = DockStyle.Fill,
AllowDrop = true,
Image = new Bitmap(800, 600),
};
var files = new List<string>();
using (var g = Graphics.FromImage(picbox.Image)) {
g.DrawString("こちらにD&D", new Font("MS UI Gothic", 24), Brushes.Green, 0.0f, 0.0f);
}
picbox.DragEnter += (sender, e) => {
if (e.Data == null) return;
if(!e.Data.GetDataPresent(DataFormats.FileDrop)) return;
e.Effect = DragDropEffects.Copy;
};
picbox.DragDrop += (sender, e) => {
if (e.Data == null) return;
var fd = e.Data.GetData(DataFormats.FileDrop);
if (fd == null) return;
string? path = ((string[])fd)[0];
if (path is null) return;
var ext = System.IO.Path.GetExtension(path).ToLower();
if (picbox.Image is not null) picbox.Image.Dispose();
picbox.Image = new Bitmap(path);
if (ext == ".gif") {
ImageAnimator.Animate(picbox.Image,
delegate{
picbox.Invalidate();
});
}
};
picbox.Paint += (o, e) => {
//if (picbox.Image.RawFormat != System.Drawing.Imaging.ImageFormat.Gif) return;
//ImageAnimator.UpdateFrames(picbox.Image);
//e.Graphics.DrawImage(vb, 0, 0);
};
Controls.Add(picbox);
}
}
実行
dotnet run
コメント