图形/视图架构的坐标系

图形/视图架构有 3 个有效的坐标系:场景坐标系、视图坐标系、图形项坐标系。

视图坐标系

视图坐标系就是视图组件的物理坐标系,单位是像素。QGraphicsView 视口的左上角坐标总是(0,0)。

场景坐标系

场景坐标系定义了所有图形项的基础坐标,场景坐标系描述了每个顶层图形项的位置。

scene= new QGraphicsScene(-400,-300,800,600);

定义了一个左上角坐标为(-400,-300)、宽度为 800 像素、高度为 600 像素的矩形区
域,单位是像素。

图形项方法-QGraphicsIteml类

图形项属性void setFlags()
void setFlag()
void setOpacity()
qreal opacity()
void setGraphicsEffect()
void setSelected()
bool isSelected()
void setData()
void setEnabled()
bool isEnabled()
void show()
void hide() 
设置图形项的操作标志,例如可选择、可移动等
启用或禁用图形项的某个标志
设置透明度
返回图形项的透明度, 0 表示透明, 1 表示完全不透明
设置图形效果
设置图形项是否被选中
图形项是否被选中
设置用户自定义数据
启用或禁用图形项。禁用的图形项是可见的,但是不能接收任何事件
返回图形项的使能状态
显示图形项
隐藏图形项
bool isVisible() 图形项是否可见
void setX() 设置图形项的 x 坐标
坐标void setY()
void setZValue()
void setPos() 
设置图形项的 y 坐标
设置图形项的
Z 值, Z 值控制图形项的叠放次序
设置图形项在父图形项中的位置
QPointF scenePos() 返回图形项在场景中的坐标,相当于调用函数 mapToScene(0, 0)
void resetTransform() 复位坐标系,取消所有坐标变换
坐标变换 void setRotation() 旋转一定角度,参数为正数时表示顺时针旋转
void setScale() 按比例缩放,默认值为 1
QPointF mapFromItem()
QPointF mapFromParent()
QPointF mapFromScene()
QPointF mapToItem()
QPointF mapToParent() 
将另一个图形项的一个点映射到本图形项的坐标系中
将父图形项的一个点映射到本图形项的坐标系中
将场景中的一个点映射到本图形项的坐标系中
将本图形项的一个点映射到另一个图形项的坐标系中
将本图形项的一个点映射到父图形项的坐标系中
坐标映射QPointF mapToScene() 将本图形项的一个点映射到场景坐标系中

场景事件、方法-QGraphicsScene 类

void setSceneRect() 设置场景的矩形区域
void setBackgroundBrush() 设置场景的背景画刷
void setForegroundBrush() 设置场景的前景画刷
场景 void update() 刷新场景显示内容
分组QGraphicsItemGroup* createItemGroup() 创建图形项组
void destroyItemGroup() 解除一个图形项组
QGraphicsItem* focusItem() 返回当前获得焦点的图形项
输入焦点void clearFocus() 清除选择的焦点
bool hasFocus() 场景是否有焦点
void addItem() 添加或移动一个图形项到场景里
void removeItem() 删除一个图形项
void clear() 清除场景中的所有图形项
QGraphicsItem* mouseGrabberItem() 返回用鼠标抓取的图形项
QList<QGraphicsItem *> selectedItems() 返回选择的图形项列表
void clearSelection() 清除所有选择
图形项操作QGraphicsItem * itemAt() 获取某个位置的顶层图形项
QList<QGraphicsItem *> items() 返回某个矩形区域、多边形等选择区域内的图形项列表
QGraphicsEllipseItem * addEllipse()
QGraphicsLineItem
* addLine()
QGraphicsPathItem
* addPath()
QGraphicsPixmapItem
* addPixmap()
QGraphicsPolygonItem
* addPolygon()
QGraphicsRectItem
* addRect()
QGraphicsSimpleTextItem
* addSimpleText()
QGraphicsTextItem
* addText() 
创建并添加一个椭圆到场景里
创建并添加一条直线到场景里
创建并添加一条绘图路径( QPainterPath 对象)到场景里
创建并添加一个
pixmap 图片到场景里
创建并添加一个多边形到场景里
创建并添加一个矩形到场景里
创建并添加一个
QGraphicsSimpleTextItem 对象到场景里
创建并添加一个字符串到场景里
添加图形项QGraphicsProxyWidget * addWidget() 创建并添加一个 QGraphicsProxyWidget 对象到场景里

视图事件、方法-QGraphicsView类

设置场景void setScene() 设置关联显示的场景
void setSceneRect() 设置场景在视图中可视部分的矩形区域
外观void setAlignment() 设置场景在视图中的对齐方式,默认是上下都居中
void setBackgroundBrush() 设置关联场景的背景画刷
void setForegroundBrush() 设置关联场景的前景画刷
 void setRenderHints() 设置视图的绘图选项
void setInteractive()
QRect rubberBandRect()
void setRubberBandSelectionMode()
QGraphicsItem* itemAt() 
设置是否允许场景交互,若禁止交互,则任何键盘或鼠标操作都被忽略
返回选择的矩形框
选择模式,参数为枚举类型 Qt::ItemSelectionMode
获取视图坐标系中某个位置的图形项
交互QList<QGraphicsItem*> items() 获取场景中的所有图形项或者某个选择区域内图形项的列表
void centerOn() 移动视口中的内容,使得场景中的某个坐标点位于视图的中央
场景显示 void ensureVisible() 移动视口中的内容,确保场景中的某个矩形区域可见
void fitInView() 视图缩放并移动卷滚条,确保场景中的某个矩形区域显示在视口中
void translate()视图坐标系平移
void scale() 视图坐标系缩放
void rotate() 视图坐标系旋转
坐标变换 void shear() 视图坐标系扭转
QPoint mapFromScene() 将场景中的一个坐标映射为视图中的坐标
坐标映射QPointF mapToScene() 将视图中的一个坐标映射为场景中的坐标


 

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值