Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: fdfsdfgjfh от Март 26, 2015, 21:28



Название: Масштабирование сцены и элемента
Отправлено: fdfsdfgjfh от Март 26, 2015, 21:28
масштабирование сделал во view:
Код:
setscale(value, 1);

Надо сделать масштабирование только по x

элементы наследуются от qgraphicsitem
там делаю
Код:
painter->drawtext  // текст добавляю в середину элемента(прямоугольник)
painter->drawRoundRect

сейчас при масштабировании текст растягивается и размазывается
и углы RoundRect вытягиваются, становится более острым.

такое поведение, думаю, очевидное
т.к. растягиваем по x

как правильно реализовать масштабирование? в какую сторону смотреть


Название: Re: Масштабирование сцены и элемента
Отправлено: Nidxogg от Март 26, 2015, 23:50
QGraphicsItem::ItemIgnoresTransformations


Название: Re: Масштабирование сцены и элемента
Отправлено: fdfsdfgjfh от Март 27, 2015, 18:20
QGraphicsItem::ItemIgnoresTransformations

А это не правильно, т.к. при мастабирование сцены объект останется таким же, мне надо объект увеличить а текст оставить


Название: Re: Масштабирование сцены и элемента
Отправлено: AzazelloAV от Март 27, 2015, 19:39
масштабирование сделал во view:
Код:
setscale(value, 1);

Надо сделать масштабирование только по x

элементы наследуются от qgraphicsitem
там делаю
Код:
painter->drawtext  // текст добавляю в середину элемента(прямоугольник)
painter->drawRoundRect

сейчас при масштабировании текст растягивается и размазывается
и углы RoundRect вытягиваются, становится более острым.

такое поведение, думаю, очевидное
т.к. растягиваем по x

как правильно реализовать масштабирование? в какую сторону смотреть

Приведите код, очень сложно судить.


Название: Re: Масштабирование сцены и элемента
Отправлено: fdfsdfgjfh от Март 27, 2015, 21:36
к сожалению не могу....

интересует какая правильная логика работы


Название: Re: Масштабирование сцены и элемента
Отправлено: AzazelloAV от Март 27, 2015, 23:12
к сожалению не могу....

интересует какая правильная логика работы

Да мы не будем смеятся.
Это же, конечно, ирония. Вы можете псевдокод написать в виде пару строк, указав метод в котором он вызывается.

Хотя, вроде бы указали......

Попытаюсь отгадать. Мы текст не хотим трогать, всё остальное да.

painter->save();
что-то с рамкой
painter->setWorldMatrixEnabled(false); //оставить всё как есть, как рисуем, все транфсормации побоку.
что-то с текстом
painter->restore();