Проблема здесь в том, что у меня есть окно отображения размером x на y, и мне нужно отображать изображение внутри окна без какой-либо прокрутки и поддерживать соотношение сторон 4: 3. У меня есть следующий фрагмент кода:
// Lock the current height, calculate new width of the canvas and scale the viewport.
// get width of the movie canvas
qreal width = canvas_->width();
// Find the height of the video
qreal height = (width/4.0) * 3;
// find original width and height for video to calculate scaling factor
qreal videoWidth = movieData_->GetWidth();
qreal videoHeight = movieData_->GetHeight();
// calculate scaling factor
qreal scaleFactorWidth = width/videoWidth;
qreal scaleFactorHeight = height/videoHeight;
Конечно, используя высоту или ширину в качестве «привязки», новое изображение так или иначе вызовет прокрутку (при условии, что исходное изображение больше, чем окно). Как мне найти размер с соотношением сторон 4: 3, который соответствует заранее определенному размеру?
Изменить. Мне нужно было бы передать коэффициент масштабирования как для x, так и для y, чтобы выполнить масштабирование.
canvas_->scale(scaleFactorWidth, scaleFactorHeight);