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 など複数の種類の画像は表示されます。