• 7535阅读
  • 8回复

请问QT如何实现QGraphicsitem 对象items的翻转? [复制链接]

上一主题 下一主题
离线liulihuogyh
 

只看楼主 倒序阅读 楼主  发表于: 2012-10-08
— 本帖被 XChinux 从 Qt网络编程 移动到本区(2012-10-08) —
关键词: QT4求助
急求,望前辈指导
现在实现了翻转,但是又遇见问题,怎么让文字翻转后是保持正常?
翻转前


翻转后



离线XChinux

只看该作者 1楼 发表于: 2012-10-08
用setTransform(),依据中心轴,水平或垂直或其它。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 2楼 发表于: 2012-10-08
下面是代码片段,分别表示缩放、旋转、水平翻转、垂直翻转
  1. void TransformCommand::transform(QGraphicsItem *item, TransformFlagT flag,
  2.         double value)
  3. {
  4.     switch (flag)
  5.     {
  6.         case ftScale:
  7.             {
  8.                 item->setTransformOriginPoint(
  9.                         item->boundingRect().center());
  10.                 item->setScale(value);
  11.             }
  12.             break;
  13.         case ftRotate:
  14.             {
  15.                 item->setTransformOriginPoint(
  16.                         item->boundingRect().center());
  17.                 item->setRotation(value);
  18.             }
  19.             break;
  20.         case ftRotateHorizontal:
  21.             {
  22.                 QTransform transform(item->transform());
  23.                 transform.rotate(180, Qt::YAxis);
  24.                 transform.translate(item->boundingRect().width() * -1, 0);
  25.                 item->setTransform(transform);
  26.             }
  27.             break;
  28.         case ftRotateVertical:
  29.             {
  30.                 QTransform transform(item->transform());
  31.                 transform.rotate(180, Qt::XAxis);
  32.                 transform.translate(0, item->boundingRect().height() * -1);
  33.                 item->setTransform(transform);
  34.             }
  35.             break;
  36.         default:;
  37.     }
  38. }

二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线liulihuogyh

只看该作者 3楼 发表于: 2012-10-08
回 2楼(XChinux) 的帖子
非常感谢,这个 TransformFlagT 不太明白?是要再写个类吗
离线XChinux

只看该作者 4楼 发表于: 2012-10-08
只是一个枚举型,自定义的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线liulihuogyh

只看该作者 5楼 发表于: 2012-10-09
回 4楼(XChinux) 的帖子
嗯,明白了,再次感谢版主
离线liulihuogyh

只看该作者 6楼 发表于: 2012-10-11
回 4楼(XChinux) 的帖子
现在实现了翻转,但是又遇见问题,要求是图形和文字在一个item中,就是上面的图那样,让文字翻转后是保持正常的,可以实现吗?
离线XChinux

只看该作者 7楼 发表于: 2012-10-12
放个Panel, 上面再放一个图,一个文字,翻转图,文字不变。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线ggkuroky
只看该作者 8楼 发表于: 2012-10-21
可以在翻转的开始瞬间让文字先反过来,再反转不就正常了吗,不过效果可能会不太好!
相信自己,天道酬勤!
快速回复
限100 字节
 
上一个 下一个