2016-12-23 7 views
-2

문제가 있습니다. 내 WPF에 이미지 파일이나 rar/zip을로드하고 싶습니다. 내 WPF에서 파일 대화 상자를 여는 버튼을 클릭하면 오류가 발생합니다.C# 파일 형식이 .jpg 인 경우 picturebox에 이미지를 표시하는 방법

이것은 파일 열기 대화 상자입니다.

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 경우 이미지를 표시하고, 파일 형식의 PictureBox에 .RAR/.ZIP 경우 RAR 아이콘 또는 아이콘을 표시하는 방법입니다.

+1

제목이 귀하의 질문 내용과 관련이 있습니까?! – DavidG

+0

이 냄새는 WinForms와 같습니다. – LarsTech

+0

죄송합니다. 내 잘못이야. 제목을 수정했습니다. –

답변

0

내가 잘못 이해하지 않는 경우, 귀하의 질문에 대한 해결책은 아래 코드와 같다;

첫째, 당신은 우편 또는 RAR 파일을 사용자가 선택한 때의 PictureBox에 표시 할 일반 사진을 선택해야합니다. 그런 다음 선택한 사진 (예 : 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이면, 그림 상자에 icon/png/또는 비슷한 것을 보여주세요. –

+0

그런 다음 표시된 코드를 사용하십시오. 파일 확장자와 장치에서 사용할 코드를 확인하십시오. – DavidG

+0

나는 그것을 해결했다. 문제는 'op.Filter'에 있습니다. 지금 나는 또 다른 문제가있다. .rar 파일을 열면 messegebox는 '메모리 부족'을 표시합니다. 어떤 해결책? –

0

아마 당신이 원하는 모든 파일 끝이 같은 검사하는 간단한 경우 - 성명 :

using System.IO; 

if (Path.GetExtension(op.FileName).EndsWith("rar") 
    || Path.GetExtension(op.FileName).EndsWith("zip")) 
{ 
    // File has rar or zip extension 
    // Load default image from resources 
} 
else 
{ 
    // Load provided image 
} 

을하고 당신이 대소 만들고 싶어 당신도 EndsWith 울어에 StringComparison.InvariantCultureIgnoreCase를 추가 할 수 있습니다 무신경.

+0

예. 나는 간단한 if-statement를 원하지만 나는 여기에서 새로 왔습니다. btw, 질문에 대한 답변을 통해. 알겠습니다. –