2016-12-23 7 views
-2

問題があります。私はWPFに画像ファイルまたはrar/zipをロードしたい。 WPF上のボタンをクリックしてファイルダイアログを開くと、いくつかのエラーが出ます。C#ファイル形式が.jpgの場合、画像を画像ボックスに表示する方法

これはファイルダイアログを開くための私のコードです。

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     op.Title = "Select a File"; 
     op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" + 
        "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" + 
        "Portable Network Graphic (*.png)|*.png"+ 
        "Zip Files|*.zip;*.rar"; 

     if (op.ShowDialog() == DialogResult.OK) 
     { 
       pictureBox1.Image = System.Drawing.Image.FromFile(op.FileName); 
       _path = op.FileName; 
       pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

私の質問は、ファイル形式が.JPG/.pngのであれば、画像を表示し、ファイル形式は、ピクチャボックスに.rarを/ .zipのであればRARアイコンまたは任意のアイコンを表示する方法です。

+1

タイトルはあなたの質問の内容と何が関係していますか? – DavidG

+0

これはWinFormsのような匂いがします。 – LarsTech

+0

申し訳ありません。私の悪い。私はタイトルを修正しました。 –

答えて

0

私は間違って理解していない場合は、あなたの質問のためのソリューションは、以下のコードのようなものです。

まず、あなたはジップまたはRARファイルがユーザによって選択されたときのPictureBoxに表示する一般的な画像を選択する必要があります。次に、選択した画像(ex:rar.jpg)をアプリの** bin \ debug **フォルダの下に置きます。

次に、以下のコードを使用してください。

 try 
     { 

      op.Title = "Select a File"; 
      op.Filter = "All Graphics Types|*.bmp;*.jpg;*.jpeg;*.png;*.tif;*.tiff|" 
    + "BMP|*.bmp|GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiff|" 
    + "Zip Files|*.zip;*.rar"; 

      if (op.ShowDialog() == DialogResult.OK) 
      { 
       string x = op.FileName.ToString(); 
       char[] ayrac = { '.' }; 
       string[] kelimeler = x.Split(ayrac); 
       string y = kelimeler[1].ToString(); 

       if (y != "zip" && y != "rar") 
       { 
        pictureBox1.Image = System.Drawing.Image.FromFile(op.FileName); 
        _path = op.FileName; 
        pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 
       } 
       else 
       { 
        //How to get picture: The best way is to put the subfolder under the app's bin\debug\,thus you can simply coding: 
        pictureBox1.Image = Image.FromFile(@"rar.jpg", true); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

ご希望のコードはあなたの質問には問題ありません。

+0

こんにちは。どうもありがとうございます。 –

+0

問題ありません。こちらこそありがとう。 –

1

ファイルアイコンを取得しようとしているようです。このように、その使用ExtractAssociatedIconを行うには:

var icon = System.Drawing.Icon.ExtractAssociatedIcon(filename); 
pictureBox1.Image = icon.ToBitmap(); 
+0

私は画像ファイルであれば、自分が選択した画像、rar/zip、show icon/png /などの画像を表示することを意味します。 –

+0

あなたのコードと一緒に示したコードを使用してください。ファイル拡張子とデバイスに使用するコードを確認してください。 – DavidG

+0

私はそれを解決しました。問題は 'op.Filter'にあります。今私は別の問題があります。 .rarファイルを開くと、messegeboxは 'out of memory'を表示します。任意のソリューションですか? –

0

たぶん、あなたが望むすべてはこのように、ファイル終了を確認し、単純なif文である:

​​

、あなたはそれを大文字にしたい場合はあなたもEndsWith -callにStringComparison.InvariantCultureIgnoreCaseを追加することができ非感受性。

+0

ええ。私は単純なif文を求めていますが、私はここで新しいです。 btw、あなたの答えのためのty。私はそれを感謝します。 –

関連する問題