соотношение сторон фотографии на панели предварительного просмотра, где высота постоянна и изменяется только ширина

У меня есть проблема, когда я создал PREVIEW HANDLER для изображения. Проблема в том, что когда у меня есть фотография на панели предварительного просмотра, она не меняет свой размер, сохраняя соотношение сторон, поэтому я хочу написать код, чтобы фотография сама изменяла размеры, сохраняя соотношение сторон изображения. Я также должен помнить, что когда я изменяю размер изображения с помощью моего алгоритма, он должен поддерживать соотношение сторон, и изображение должно иметь максимально возможный размер на панели предварительного просмотра (я имею в виду, что не должно быть никаких других алгоритмов, которые могли бы иметь изображение предварительный просмотр большего размера, чем изображение, полученное по нашему алгоритму с сохранением соотношения сторон).

Мы должны помнить, что высота панели предварительного просмотра является постоянным фактором, поэтому нам приходится иметь дело только с изменяющейся шириной (я имею в виду, что в соответствии с изменяющейся шириной мы должны поддерживать соотношение сторон как для высоты, так и для ширины изображения).
Любая помощь в развитии algorthim приветствуется.

0

Решение

  • Сначала я четко определю два соотношения.

    ImageRatio = WidthOfImage / HeightOfImage а также

    WindowRatio = WidthOfPreviewPane / HeightOfPreviewPane,

  • Во-вторых, вы можете попробовать свой Windows Explorer снова. Когда WindowRatio меньше, чем ImageRatio Если вы перетащите панель вертикально, высота панели предварительного просмотра также изменится.

    введите описание изображения здесь

  • Наконец, вы можете получить ActualWidthOfImage а также ActualHeightOfImage как показано ниже:

    if (WindowRatio > ImageRatio)
    {
    ActualHeightOfImage = HeightOfPreviewPane;
    ActualWidthOfImage = ActualHeightOfImage * ImageRatio;
    }
    else
    {
    ActualWidthOfImage = WidthOfPreviewPane;
    ActualHeightOfImage = ActualWidthOfImage / ImageRatio;
    }
    

Я правильно понимаю вашу проблему? Я хотел бы помочь вам, если у вас есть дополнительные вопросы.

0

Другие решения

Других решений пока нет …