Graphics View绘图架构(二)

Graphics View结构的主要类包括:视图类QGraphicsView、场景类QGraphicsScene、和各种图形项类(基类都是 QGraphicsItem)

1. QGraphicsView 用于观察一个场景的物理窗口

  场景小于视图,整个场景在视图中可见;当场景大于视图时,试图自动提供卷滚条

  QGraphicsView的视口坐标等于显示设备的物理坐标,但是可以对QGraphicsView的坐标进行平移、旋转和缩放

  设置接口函数如下:

场景 void     setScene()  // 设置关联的场景
  void  setSceneRect()   //场景在视图中可视的部分的矩形区域
     
外观 void     setAlignment()  //设置场景在在视图中的对齐方式
  void     setBackgroundBrush()  
  void     setForegroundBrush()  
  void      setRenderHints( ) //设置绘图选项
     
交互 void setInteractive() 可交互
  QRect rubberBandRect 返回选择矩形框
  void setRubberBandSelectionMode() 选择模式
  QGraphicsItem *itemAt() 获取视图坐标系中 某个位置处的图形项
  QList<QGraphicsItem *> items() 获取场景中所有、或者某个选择区域内图形项的列表
坐标 QPoint        mapFormScene 将场景中的一个坐标转换为视图的坐标
映射 QPointF      mapToScene 将视图中的一个坐标转换为场景的坐标

2 QGraphicsScene 主要用于管理图形项的场景,是图形项的容器,有添加、删除图形项的函数,管理图形项的各种函数。

场景 void setSceneRect() set场景的矩形区
分组 QGraphicsItemGroup* createItemGroup() 创建图形项组
  void destroyItemGroup() 解除一个图形项组
输入焦点 QGraphicsItem * focusItem 返回当前获得焦点的图形项
  void clearFocus 去除选择焦点
  bool hasFocus 视图时否有焦点
图形项操作 void addItem() 添加一个已经创建的图形项
  void removeItem() 删除图形项
  void clear() 清除所有图形项
 
QGraphicesItem* mouseGrabberItem()

返回鼠标抓取的图形项
  QList<QGraphicsITEM *>selectedItems() 返回选择的图形项列表
  QGraphicsItem *itemAt() 获取某个位置处的顶层图形项
  QList<QGraphicsITEM *> items() 返回选择区域内图形项列表
     
     

3  QGraphicsItem是所有图形类的基类

注意坐标映射

原文地址:https://www.cnblogs.com/AmyBKLP/p/11706412.html

时间: 2024-10-30 07:50:40

Graphics View绘图架构(二)的相关文章

qt Graphics View Framework(非重点)

Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转. 说明;Graphics View 框架包含了一套完整的事件体系,可以用于与场景中的元素进行双精度的交互.这些元素同样支持键盘事件.鼠标事件等. Graphics View 使用了 BSP 树(Binary Space Partitioning tree,这是一种被广泛应用于图形学方面的数据结构)来提供非常快速的元素发现,也正因为如此

pyqt5 graphics view简单使用

Graphics View提供了一个平面,用于管理和交互大量自定义的2D图形图元,以及一个用于可视化图元的视图窗口小部件,支持缩放和旋转. 该框架包括一个事件传播架构,允许场景中图元的精确双精度交互功能.图元可以处理关键事件,鼠标按下,移动,释放和双击事件,还可以跟踪鼠标移动. Graphics View使用BSP(二进制空间分区)树来提供非常快速的图元发现,因此,即使有数百万个图元,它也可以实时显示大型场景. 先说一下这里面的坐标系: 图形视图基于笛卡尔坐标系(平面直角坐标系x.y轴); 场景

Android - View绘图原理总结

原文地址:http://blog.csdn.net/xu_fu/article/details/7829721 Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类,由此就得到了视图部分的基本结构--树形结构 View定义了绘图的基本操作 基本操作由三个函数完成:measure().layout().draw(),其内部又分别包含了onMeasure().onLayout().onDraw()三个子方法.具体操作如下:

The Graphics View Coordinate System(Qt翻译)

Graphics View以笛卡尔坐标系为基础,items在scene上的位置和几何结构由x坐标和y坐标表示.当我们用未转置的view来观察scene时,scene中的一个单元由屏幕中的一个像素表示. 注:由于Graphics Views使用Qt的坐标系,y轴反向(y轴正方向向上)的坐标系是不支持的. Graphics View中有三个实用的坐标系:item坐标系.scene坐标系和view坐标系. 为了简化坐标系相关代码,Graphics View提供了便捷的函数,以方便在三个坐标系间转换.

媒体层:Core Graphics(绘图)

1.简介: 基于C的API,用于绘图, 当使用UIKit来创建按钮.图像或者其他UIView的子类时,UIKit会使用Core Graphics来将这些元素绘制在屏幕上 可创建直线.路径.渐变.文字.图像等内容 CGContextRef:图像上下文.画布 从UIView的子类中获取它的当前上下文UIGraphicsGetCurrentContext(),然后重写drawRect方法 绘图动作是顺序的,每个动作都是在前一个动作的基础上面完成的 只要iOS任务一个视图需要被刷新或者重绘drawRec

Android View measure (二) 自定义UI控件measure相关

本篇模拟三个角色:Android 架构师-小福.Android  控件开发工程师-小黑. Android 开发工程师-小白,下面按照三个角色不同角度分析measure过程. 小福负责分享: measure的本质 measure代码流程 onMeasure方法与MeasureSpec 提出问题 小黑负责分享: 布局控件开发中覆写Measure例子 - ok 从遇到的一个异常说起 什么时候需要覆写onMeaure? - ok view.getWidth与view.getMeasureWidth区别

Android View系统分析之二View与ViewGroup

目录 在Android View系统分析之从setContentView说开来(一)一文中,我们从setContentView开始阐述了Android中的视图层次,从设置内容布局到整个视图层次的建立的过程.并且对View和ViewGroup的关系进行了简单的介绍,今天我们继续来深入的了解Android中的View和ViewGroup. ViewGroup与View的关系 我们在定义一个布局时,在它的顶层通常都是使用LinearLayout或者RelativeLayout等组件来包装一些子控件,例

Android开发之自定义View专题(二):自定义饼图

在图表里面,常用的图标一般为折线图.柱形图和饼图,上周,博主已经将柱形图分享.在博主的项目里面其实还用到了饼图,但没用到折线图.其实学会了其中一个,再去写其他的,应该都是知道该怎么写的,原理都是自己绘制图形,然后获取触摸位置判定点击事件.好了,废话不多说,直接上今天的饼图的效果图 这次也是博主从项目里面抽离出来的,这次的代码注释会比上次的柱形图更加的详细,更加便于有兴趣的朋友一起学习.图中的那个圆形指向箭头不属于饼图的部分,是在布局文件中为了美化另外添加进去的,有兴趣的朋友可以下载完整的项目下来

自定义控件三部曲之绘图篇(二十)——RadialGradient与水波纹按钮效果

前言:每当感叹自己的失败时,那我就问你,如果让你重新来一次,你会不会成功?如果会,那说明并没有拼尽全力. 最近博主实在是太忙了,博客更新实在是太慢了,真是有愧大家. 这篇将是Shader的最后一篇,下部分,我们将讲述Canvas变换的知识.在讲完Canvas变换以后,就正式进入第三部曲啦,是不是有点小激动呢-- 今天给大家讲的效果是使用RadialGradient来实现水波纹按钮效果,水波纹效果是Android L平台上自带的效果,这里我们就看看它是如何实现的,本篇的最终效果图如下 一.Radi