ここに何かがあります、私はあなたを直しました。
C# プロジェクト名CreateImageListを作成し、Form1 に次の 5 つのコントロールを既定の名前 (Panel1、PictureBox1、Label1、Button1、Button2) で追加します。
使い方:
- ページが読み込まれると、imageList オブジェクトが作成され、指定したフォルダーからすべての .jpg 画像が読み込まれます
- ImageList 画像は PictureBox コントロールに設定され、ユーザーが "Button1" をクリックすると画像ボックスは ImageList の次の画像を表示し、ユーザーが "Button2" をクリックすると PictureBox は ImageList の前の画像を表示します。
- Label1 は、ImageList Arrage からの currentImage カウンターを示します。何か特定のことを書きたい場合は、テキストの配列を作成し、画像カウンターと同期できます。
- ユーザーが PictureBox をクリックすると、強調表示された画像を表示する境界線が作成されます
- ユーザーが PictureBox をダブルクリックすると、MessageBox が表示され、DoubleClick イベントが表示されます。
これで、次のコードを使用できます。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace CreateImageList
{
public partial class Form1 : Form
{
private int currentImage = 0;
protected Graphics myGraphics;
ImageList iPicList = new ImageList();
public Form1()
{
InitializeComponent();
DirectoryInfo dirImages = new DirectoryInfo("C:\\2012");
iPicList.ImageSize = new Size(255, 255);
iPicList.TransparentColor = Color.White;
myGraphics = Graphics.FromHwnd(panel1.Handle);
foreach (FileInfo file in dirImages.GetFiles())
{
if (file.Extension == ".jpg")
{
Image myImage = Image.FromFile(file.FullName);
iPicList.Images.Add(myImage);
}
}
if (iPicList.Images.Empty != true)
{
panel1.Refresh();
currentImage = 0;
// Draw the image in the panel.
iPicList.Draw(myGraphics, 1, 1, currentImage);
// Show the image in the PictureBox.
pictureBox1.Image = iPicList.Images[currentImage];
label1.Text = "Image #" + currentImage;
}
}
private void showImage(int imgIndex)
{
// Draw the image in the panel.
iPicList.Draw(myGraphics, 1, 1, currentImage);
// Show the image in the PictureBox.
pictureBox1.Image = iPicList.Images[currentImage];
label1.Text = "image #" + currentImage;
panel1.Refresh();
}
private void button1_Click(object sender, EventArgs e)
{
if (iPicList.Images.Count - 1 > currentImage)
{
currentImage++;
}
else
{
currentImage = 0;
}
showImage(currentImage);
}
private void button2_Click(object sender, EventArgs e)
{
if (iPicList.Images.Count - 1 >= currentImage)
{
if (currentImage == 0)
currentImage = iPicList.Images.Count-1;
else
currentImage--;
}
else
{
currentImage = iPicList.Images.Count;
}
showImage(currentImage);
}
private void pictureBox1_DoubleClick(object sender, EventArgs e)
{
MessageBox.Show("Picture Box Double clicked");
}
private void pictureBox1_Click(object sender, EventArgs e)
{
panel1.Refresh();
myGraphics.DrawRectangle(Pens.Black, 0, 0, iPicList.Images[currentImage].Width + 1, iPicList.Images[currentImage].Height + 1);
pictureBox1.Image = iPicList.Images[currentImage];
}
}
}
必要な変更は次のとおりです。
次のフォルダーを、大量の jpg がある場所に変更します。
DirectoryInfo dirImages = new DirectoryInfo("C:\\2012");
また、他の種類の画像を扱っている場合は、ここで変更してください。
if (file.Extension == ".jpg") // Change it to your image type.
ボタンを使用して上下に移動したくない場合は、スクロール可能なパネルまたはリストなどで PictureBox コントロールをホストするいくつかのオプションがあります。