2013-05-15 3 views
0

Итак, я работаю над этим приложением форм MDI, и я использую окно с изображением, чтобы показывать фотографии, выбранные из openFileDialog. Однако сегодня пользователь жаловался на то, что если изображение является ландшафтным (я сделал тест с разрешением 1920x1200), он действительно сокращает правый конец изображения. Конечно, ширина окна изображения намного меньше (440 пикселей), но все же даже для изображения, которое я использовал для теста, оно немного сократилось. Однако это неприемлемо, поэтому я хочу, чтобы все изображение соответствовало рамке рамки изображения независимо от того, насколько она велика.PictureBox режет часть изображения, когда это пейзаж

Вот мой код, показывающая картина:

OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

      openFileDialog1.Filter = "All files (*.jpg)|" + prefixFilter + "*.jpg"; 
      openFileDialog1.FileName = prefixFilter; 
      openFileDialog1.Title = "Select file"; 
      openFileDialog1.InitialDirectory = DefaultOpenPath; 
      openFileDialog1.FilterIndex = 1; 
      openFileDialog1.RestoreDirectory = true; 

      if (openFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       try 
       { 
        IsImageOpened = true; 
        selectedFile = openFileDialog1.FileName; 
        selectedFileName = openFileDialog1.SafeFileName; 

        using (var temp = new Bitmap(openFileDialog1.FileName)) 
        { 
         pictureBox1.Image = new Bitmap(temp); 
        } 

        int imageWidth = pictureBox1.Image.Width; 
        int picBoxWidth = pictureBox1.Width; 

        if (imageWidth != 0 && picBoxWidth > imageWidth) 
        { 
         pictureBox1.Width = imageWidth; 
        } 
        else 
        { 
         pictureBox1.Width = defaultPicBoxWidth; 
        } 
       } 
       catch (Exception ex) 
       { 
        logger.Error(ex.ToString()); 
        IsImageOpened = false; 
        MessageBox.Show("Error loading image!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
       } 
      } 

Здесь я играю с шириной изображения, но и для различных целей, я не знаю, могу ли я использовать этот код или есть какой-то стандартный способ справиться с этой проблемой.

Также у меня есть SizeMode - Zoom.

PS

Это оригинальный рис:

landscape image

И это, как режет PictureBox на правой стороне (обратите внимание на кусты от оригинального образа - они ушли)

cut off image

+0

Создайте новый проект, добавьте иллюстрацию и воспроизведите проблему. Затем покажите код здесь. Если вы не можете воспроизвести его в новом проекте, то проблема, очевидно, находится где-то еще в вашем проекте code/ui (что-то может покрывать правую часть изображения). Этого не должно быть, он должен отлично работать с SizeMode Zoom, который вы используете. – svinja

+0

Согласен ... это невозможно с помощью набора «Масштаб». Можете ли вы опубликовать несколько скриншотов из полного изображения и как его отрезать? –

+0

Теперь вы можете видеть в отредактированном сообщении, что действительно происходит. – Leron

ответ

0

Вы можете просто установить PictureBoxSizeMode из pictureBox как:

pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 

Проверить here для более подробно.

+0

Он не поддерживает соотношение сторон, а также - я все равно пытался - снова часть изображения была отключена. – Leron

0

Это трудно сказать, но, глядя на картину, это действительно кажется, как PictureBox просто устанавливается по умолчанию SizeMode из Normal:

Normal - изображение помещается в верхнем левом углу PictureBox. Изображение обрезается, если он больше, чем PictureBox оно содержится в.

Двойной контроль и убедитесь, что SizeMode установлен в Zoom и что-то вы не изменяете эту недвижимость через код.

Смежные вопросы