Название: Трансформация QGraphicsItem Отправлено: sLiva от Июль 27, 2009, 18:08 Все привет!
Народ помогите решить задачу, пол дня убил, думал ничего сложного не возникнет. Мне нужно трансформировать прямоугольный QGraphicsItem в трапецию, т.е. по сути "сузить" его верхнее ребро. Копал в сторону QTransform, QMatrix не помогло :( Кто откликнется заранее спасибо. Название: Re: Трансформация QGraphicsItem Отправлено: lighting от Июль 27, 2009, 22:12 возможно есть варианты и проще, но как минимум можно воспользоваться drawPolygon и пересчитывая координаты добиться нужного искажения.
Название: Re: Трансформация QGraphicsItem Отправлено: sLiva от Июль 27, 2009, 22:26 возможно есть варианты и проще, но как минимум можно воспользоваться drawPolygon и пересчитывая координаты добиться нужного искажения. Не совсем понял как пересчитывать координаты, QGraphicsItem, который нужно трансформировать, содержит в себе много чего, при трансформации нужно что бы все его внутренности тоже трансформировались, мне кажется нужно каким-то хитрым способом построить матрицу трансформации, или скомбинировать несколько трансформация, но пока нужного эффекта не добился :( Название: Re: Трансформация QGraphicsItem Отправлено: sLiva от Июль 30, 2009, 18:55 Народ, забыл отписаться, на самом деле все это можно сделать, оказалось я копал в правильном направлении, в Qt есть поддержка трансформации в перспективу, добился нужного эффекта следующим кодом:
Код
Т.е. просто делаем rotate где задаем последним параметром по какой координате крутить в пространстве. А в инете наткнулся на пример (http://zrusin.blogspot.com/2006/09/perspective-transformations.html жалко без исходников) там прямоугольную картинку за углы в любом направлении изменяют, хитро высчитывая матрицу трансформации, кстати еслиб кто на в нормальный мануал по этой матрице ткнул было бы совсем офигенно :-) |