Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Система рисования. Печать _ зеркальное отображение графика

Автор: karabura 25.6.2009, 11:09

Просмотрел документацию на форуме - про графические представления и координаты. Не могу никак найти способ зеркального отображения
содержимого QGraphicsView. У него же координаты с левого верхнего начинаются, график нужно отобразить зеркально вниз.
Вращение получается, зеркалирование нет. Как лучше сделать, чем воспользоваться?

Автор: SABROG 25.6.2009, 12:46

Попробуй scale() с отрицательным значением.

Автор: BRE 25.6.2009, 12:58

Цитата(karabura @ 25.6.2009, 12:09) *
Просмотрел документацию на форуме - про графические представления и координаты. Не могу никак найти способ зеркального отображения
содержимого QGraphicsView. У него же координаты с левого верхнего начинаются, график нужно отобразить зеркально вниз.
Вращение получается, зеркалирование нет. Как лучше сделать, чем воспользоваться?

Так матрицу преобразований можно установить.
Нужно по аффинным преобразованиям информацию глянуть.

Автор: karabura 25.6.2009, 13:48

Ок, спасибо, буду пробовать. Тяжеловато конечно в аффинных преобразованиях разбираться, ну придёться

Автор: BRE 25.6.2009, 14:23

Цитата(karabura @ 25.6.2009, 14:48) *
Ок, спасибо, буду пробовать. Тяжеловато конечно в аффинных преобразованиях разбираться, ну придёться

Там матрица примитивная. :)
Набери в гугле: "матрица отражения"
или зайти сюда: http://www.intuit.ru/department/graphics/direct3dhlsl/1/3.html
(это первая ссылка по запросу). ;)

Автор: SABROG 25.6.2009, 14:50

Я правильно http://compgraphics.info/2D/affine_transform.php?

QMatrix xRefrect(-1.0/*m11*/, 0.0/*m12*/, 0.0/*m21*/, 1.0/*m22*/, 0.0/*dx*/, 0.0/*dy*/);
QMatrix yRefrect(1.0/*m11*/, 0.0/*m12*/, 0.0/*m21*/, -1.0/*m22*/, 0.0/*dx*/, 0.0/*dy*/);


* m11 - горизонтальное растягивание (horizontal scale)
* m22 - вертикальное растягивание (vertical scale)
* m21 - горизонтальный сдвиг (horizontal shearing)
* m12 - вертикальный сдвиг (vertical shearing)

В итоге:
m11 = -1.0 - растягивание в сторону уменьшения (отражение по горизонтали)
m22 = 1.0 - вертикальное растягивание (1.0 - оригинальная высота изображения, без изменений)

m11 = 1.0 - горизонтальное растягивание (1.0 - оригинальная ширина изображения, без изменений)
m22 = -1.0 - вертикальное растягивание в сторону уменьшения (отражение по вертикали)

В итоге приходим к scale(-1.0, 1.0); и scale(1.0, -1.0);

Автор: BRE 25.6.2009, 14:55

Цитата(SABROG @ 25.6.2009, 15:50) *
Я правильно http://compgraphics.info/2D/affine_transform.php?

QMatrix xRefrect(-1.0, 0.0, 0.0, 1.0, 0.0, 0.0);
QMatrix yRefrect(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);

Я давненько с этим не сталкивался, но очень похоже... :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)