Russian Qt Forum

Qt => Вопросы новичков => Тема начата: folax от Март 06, 2015, 12:18



Название: [РЕШЕНО] QPainter сохранение пропорций фигуры при ресайзе
Отправлено: folax от Март 06, 2015, 12:18
Добрый день. Подскажите пожалуйста, как правильно сохранять пропорции фигуры при рисовании через QPainter. Фигура при ресайзе должна сохранять свои пропорции.
Пример:
 
(http://s018.radikal.ru/i504/1503/c0/91b1c8556756.jpg)

Код:

Код:
    QPainter painter(this);
    QBrush brush(Qt::gray, Qt::SolidPattern);

    QRect screen(0, 0, width(), height());
    painter.drawRect(screen);
    painter.fillRect(screen, brush);

    QBrush blockBrush(Qt::blue, Qt::SolidPattern);

    QRect block(0, 0, screen.width() / 2 , screen.height() / 2);
    painter.drawRect(block);
    painter.fillRect(block, blockBrush);


Название: Re: QPainter сохранение пропорций фигуры при ресайзе
Отправлено: Swa от Март 06, 2015, 12:47
Код:
	float ratio  = 1;

QPainter painter(this);
QBrush brush(Qt::gray, Qt::SolidPattern);

QRect screen(0, 0, width(), height());
painter.drawRect(screen);
painter.fillRect(screen, brush);

QBrush blockBrush(Qt::blue, Qt::SolidPattern);

int newWidth = screen.width() / 2;
int newHeight = screen.height() / 2;

if ((int)(newWidth * ratio) < newHeight) {
newHeight = newWidth * ratio;
}
if ((int)(newHeight / ratio) < newWidth) {
newWidth = newHeight / ratio;
}

QRect block(0, 0, newWidth , newHeight);
painter.drawRect(block);
painter.fillRect(block, blockBrush);


Название: Re: QPainter сохранение пропорций фигуры при ресайзе
Отправлено: Hrundel от Март 06, 2015, 12:48
Не знаю конечно, какие есть нативные функции, но с элементарной математикой надо дружить и писать такую фигню самостоятельно.

фактор = ширину / высоту

После изменения размера

ширина = высота * фактор


Название: Re: QPainter сохранение пропорций фигуры при ресайзе
Отправлено: folax от Март 06, 2015, 12:57
Спасибо большое за ответы, нужно Шлее в раздел про рисование этот фактор добавить. Закрывайте тему.


Название: Re: QPainter сохранение пропорций фигуры при ресайзе
Отправлено: gil9red от Март 06, 2015, 13:14
Спасибо большое за ответы, нужно Шлее в раздел про рисование этот фактор добавить. Закрывайте тему.

Вы создали, вам ее и закрывать :D
Подредактируйте первое сообщение, добавив в название темы в начало [РЕШЕНО]