ZIP ファイルから直接画像を取り出すには、以下のコードを Form_Load イベントに追加して複数の画像ファイルを ZIP ファイルに圧縮します。
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
'リソースディレクトリに画像一覧を作成し、ZIP ファイルに追加します。
Dim zip As New C1ZipFile()
Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' アプリケーションディレクトリを取得します。
Dim s As String = Application.ExecutablePath
s = s.Substring(0, s.IndexOf("\bin")) + "\resources"
' ZIP ファイルを作成します。
zip.Create((s + "\images.zip"))
' 画像をZIPファイルとリストボックスに追加します。
Dim f As String
For Each f In Directory.GetFiles(s)
Dim fname As String = f.ToLower()
'zip ファイルをスキップします。
If fname.EndsWith("zip") Then
GoTo ContinueForEach1
End If
' 画像一覧をリストボックスに追加します。
ListBox1.Items.Add(Path.GetFileName(fname))
' 画像をZIPファイルに追加します。
zip.Entries.Add(fname)
ContinueForEach1:
Next f
End Sub
|
|
C# コードの書き方
| C# |
コードのコピー
|
|---|---|
//リソースディレクトリに画像一覧を作成し、ZIP ファイルに追加します。
C1ZipFile zip = new C1ZipFile();
private void Form1_Load(object sender, System.EventArgs e)
{
// アプリケーションディレクトリを取得します。
string s = Application.ExecutablePath;
s = s.Substring(0, s.IndexOf(@"\bin")) + @"\resources";
// ZIPファイルを作成します。
zip.Create(s + @"\images.zip");
//画像をZIPファイルとリストボックスに追加します。
foreach (string f in Directory.GetFiles(s))
{
string fname = f.ToLower();
// ZIPファイルをスキップします。
if (fname.EndsWith("zip")) continue;
//画像一覧をリストボックスに追加します。
listBox1.Items.Add(Path.GetFileName(fname));
//画像をZIPファイルに追加します。
zip.Entries.Add(fname);
}
}
|
|
画像を選択し、画像データ格納しているストリームを取得し(OpenReader メソッド)、画像を読み込む(Image.FromStream メソッド)には、以下のコードを SelectedIndexChanged イベントに追加します。
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
' 選択された画像を表示します。 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles |
|
C# コードの書き方
| C# |
コードのコピー
|
|---|---|
// 選択された画像を表示します。
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs eventArgs e)
{
// 選択された項目を取得します。
string item = (string)listBox1.SelectedItem
// 圧縮ストリームから画像を直接読み込みます。
Stream s = zip.Entries[item].OpenReader()
try
{
pictureBox1.Image = (Image)Image.FromStream(s)
}
catch {}
// ストリームを終了します。
s.Close();
}
|
|
下図には、 ICO、 GIF、 TIFF、 BMP や JPG など複数の種類の画像は表示されます。