• 6311阅读
  • 7回复

[提问]怎样使QGraphicsScene场景中Item的一部分不随场景的缩放而缩放 [复制链接]

上一主题 下一主题
离线hjh2008
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-09
首先在场景中添加了一个Item,如下图:


选中该红色的Item后会显示它周围的调节手柄,如下图:


放大场景后调节手柄会跟着放大,如下图所示:


我想实现的是,红色的区域会随着场景的缩放而缩放,但是调节手柄不能缩放,这要怎么实现?(我的调节手柄和红色区域是属于同一个Item)

离线ninsun

只看该作者 1楼 发表于: 2011-11-09
缩放的时候计算一下当前缩放下手柄应该的大小……
比如你需要缩放手柄保持6pix宽……

  // 获取现有比例下的6×6像素的大小
  QPointF _p0 = view()->mapToScene(0, 0);
  QPointF _p4 = view()->mapToScene(6, 6);
  QPointF _p = _p4-_p0;

这个_p就是当前比例下6×6的大小了……
离线hjh2008

只看该作者 2楼 发表于: 2011-11-09
回 1楼(ninsun) 的帖子
可我是在Item里的paint里画的啊,怎么才能得到view?

本来想用paint里的option->levelOfDitail得到缩放因子的,但是调试了一下levelOfDitail始终为1.
离线ninsun

只看该作者 3楼 发表于: 2011-11-09
QGraphicsItem::scene() 函数获得item所在的scene。
QGraphicsScene::views()函数获得载入了scene的所有场景列表。
离线myer

只看该作者 4楼 发表于: 2011-11-11
这个问题我遇到过,呵呵
在painter函数里,重新设置painter的transform
painter->setTransform(transform().inverted(), true);
http://user.qzone.qq.com/56430808
离线lclflash

只看该作者 5楼 发表于: 2011-11-11
我在QGraphicsItem 的派生类painter函数里调用好像不好用呀!,怎么回事?
离线lclflash

只看该作者 6楼 发表于: 2011-11-11
我试过了,基于QGraphicsItem 的派生类 调用scale是可以的,但是针对QGraphicsView是不可以的
离线regbbs
只看该作者 7楼 发表于: 2011-11-16
QGraphicsItem::GraphicsItemFlags

QGraphicsItem::ItemIgnoresTransformations
快速回复
限100 字节
 
上一个 下一个