Классы геометрии. Двумерный размер

   
На этом шаге рассмотрим классы QSize и QSizeF.

   
Классы QSize и QSizeF служат для хранения целочисленных и вещественных размеров. Оба класса обладают одинаковыми интерфейсами. Структура очень похожа на QPoint, т. к. хранит две величины, над которыми можно проводить операции сложения/вычитания и умножения/деления.

   
Классы QSize и QSizeF, как и классы QPoint, QPointF, предоставляют операторы сравнения ==, != и метод isNull(), возвращающий значение true в том случае, если высота и
ширина равны нулю.

   
Для получения ширины и высоты вызываются методы width() и height(). Изменить эти параметры можно с помощью методов setWidth() и setHeight(). При помощи методов rwidth() и rheight() получают ссылки на значения ширины и высоты. Например:

QSize size(10, 20);
int n = size.rwidth()++; // n = 11; size = (11, 20)

   
Помимо них класс предоставляет метод scale(), позволяющий изменять размеры оригинала согласно переданному в первом параметре размеру. Второй параметр этого метода управляет способом изменения размера (рис. 1 - 3), а именно:

  • Qt::IgnoreAspectRatio — изменяет размер оригинала на переданный в него размер;
    Рис.1. Изменение размера оригинала с параметром Qt::IgnoreAspectRatio

    QSize size1(150, 160);
    size1.scale(300, 100, Qt::IgnoreAspectRatio); // => (300, 100)
  • Qt::KeepAspectRatio — новый размер заполняет заданную площадь насколько это будет возможно с сохранением пропорций оригинала;
    Рис.2. Изменение размера оригинала с параметром Qt::KeepAspectRatio

    QSize size1(150, 160);
    size1.scale(300, 100, Qt::KeepAspectRatio); // => (93, 100)
  • Qt::KeepAspectRatioByExpanding — новый размер может находиться за пределами переданного в scale(), заполняя всю его площадь.
    Рис.3. Изменение размера оригинала с параметром Qt::KeepAspectRatioByExpanding

    QSize size1(150, 160);
    size1.scale(300, 100, Qt::KeepAspectRatioByExpanding); // => (300, 320)

   
Файлы приложения, иллюстрирующего изменение размера оригинала, можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий