2016-12-23 3 views
-2

У меня проблема. Я хочу загрузить файл изображения или rar/zip в свой WPF. когда я нажимаю кнопку на моем 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 или любой значок, если формат файла .rar/.zip в PictureBox.

+1

Какое название имеет отношение к содержанию вашего вопроса ?! – DavidG

+0

Это пахнет WinForms. – LarsTech

+0

извините. моя вина. Я исправил заголовок. –

ответ

0

, если я не понимаю неправильно, решение вашего вопроса, как это ниже кода;

Во-первых, вы должны выбрать общую картину, чтобы показать в PictureBox, когда почтовый или RAR файл выбирается пользователем. Затем поместите выбранное изображение (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

owh .. это работа. Спасибо большое. –

+0

Нет проблем. И тебе спасибо. –

1

Кажется, вы пытаетесь получить значок файла. Для этого используется ExtractAssociatedIcon, как это:

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

Я имею в виду, если файл изображения показывает изображение, которое я выбираю, если rar/zip, показать значок/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 
} 

и вы даже можете добавить StringComparison.InvariantCultureIgnoreCase к EndsWith -Call, если вы хотите, чтобы сделать его прецедентной нечувствительны.

+0

да. Я хочу простой оператор if, но я здесь новый. btw, ty для ответа ур. я ценю это. –