《图形与图画》PPT课件

上传人:nu****n 文档编号:252942923 上传时间:2024-11-26 格式:PPT 页数:33 大小:2.10MB
返回 下载 相关 举报
《图形与图画》PPT课件_第1页
第1页 / 共33页
《图形与图画》PPT课件_第2页
第2页 / 共33页
《图形与图画》PPT课件_第3页
第3页 / 共33页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,7,章 图形与图画,7.1,各类位置相关函数的,区别,7.2,各种与位置相关函数的使用场合,7.3,各种基础图形的绘制,7.4,双缓冲机制,7.5,SVG,格式图片的显示,7.1,各类位置相关函数的区别,Qt,提供了很多关于获取窗体位置以及显示区域大小的函数,如,x(),、,y(),和,pos(),、,rect(),、,size(),、,geometry(),等,如图,7.1,所示。,7.2,各种与位置相关函数的使用场合,本节通过一个简单的例子介绍,QWidget,提供的,x(),、,y(),、,frameGeometry,、,pos(),、,rect(),、,size(),、,geometry(),等函数的使用场合。在此例中,当改变对话框的大小,或移动对话框时调用各个函数所获得的信息也相应地发生变化,从变化中可得知各函数之间的区别,如图,7.2,所示。,7.3,各种基础图形的绘制,首先介绍各种形状的区分,其次介绍画笔颜色、线宽、风格、顶帽风格、连接点风格以及画刷的颜色设置、填充模式和画刷的风格设置,使用的实例如图,7.3,所示。,7.3,各种基础图形的绘制,此实例的具体实现包含了两个部分的内容,一个是用于画图的区域,PaintArea,类,一个是主窗口,MainWidget,类,如图,7.4,所示。,7.3.1,绘图区的实现,打开“,paintarea.h,”头文件,添加如下代码:,#include,#include,class PaintArea:public QWidget,Q_OBJECT,public:,enum ShapeLine,Rectangle,RoundRect,Ellipse,Polygon,Polyline,Points,Arc,Path,Text,Pixmap;,PaintArea(QWidget*parent=0);,void setShape(Shape);,void setPen(QPen);,void setBrush(QBrush);,void setFillRule(Qt:FillRule);,void paintEvent(QPaintEvent*);,private:,Shape shape;,QPen pen;,QBrush brush;,Qt:FillRule fillRule;,;,7.3.1,绘图区的实现,PaintArea,类的构造函数完成初始化工作,设置了图形显示区域的背景色以及最小显示尺寸,具体代码如下:,#include paintarea.h,#include,PaintArea:PaintArea(QWidget*parent),:QWidget(parent),setPalette(QPalette(Qt:white);,setAutoFillBackground(true);,setMinimumSize(400,400);,setShape(),函数可以设置形状、,setPen(),函数可以设置画笔、,setBrush(),函数可以设置画刷、,setFillRule(),函数可以设置填充模式,具体,代码实现,。,7.3.1,绘图区的实现,(1),利用,QPainter,绘制图形(,Shape,),Qt,为开发者提供了丰富的绘制基本图形的,draw,函数,如图,7.6,所示。,7.3.1,绘图区的实现,(2),利用,QPainterPath,绘制简单图形,利用,QPainterPath,绘制简单图形,,QPainterPath,类为,QPainter,类提供了一个存储容器,里面包含了所要画的内容的集合以及画的顺序,如长方形、多边形、曲线等各种任意图形。,cubicTo(),函数绘制的是贝赛尔曲线,如图,7.7,所示。,7.3.1,绘图区的实现,利用,QPainterPath,类可以实现,QPainter,类的所有,draw(),函数能实现的图形。如对于,QPainter:drawRect(),函数,除了可用上面介绍的,QPainterPath:addRect(),的方式实现,还可以用如下方式实现:,QPainterPath path;,path.moveTo(0,0);,path.lineTo(200,0);,path.lineTo(200,100);,path.lineTo(0,100);,path.lineTo(0,0);,7.3.2,主窗口的实现,主窗口类,MainWiget,继承自,QWidget,类,包含完成各种图形参数选择的控制区的声明、一系列设置与画图相关参数的槽函数的声明和一个绘图区,PaintArea,对象的声明。打开“,mainwidget.h,”头文件,,添加代码,。,MainWiget,类的构造函数中创建了各参数选择控件,打开“,mainwiget.cpp,”文件,,添加代码,。,7.3.2,主窗口的实现,ShowShape(),槽函数,根据当前下拉列表框中选择的选项,并调用,PaintArea,类的,setShape(),函数设置,PaintArea,对象的形状参数,具体代码如下:,void MainWidget:ShowShape(int value),PaintArea:Shape shape=PaintArea:Shape(shapeComboBox-itemData(,value,Qt:UserRole).toInt();,paintArea-setShape(shape);,7.3.2,主窗口的实现,在此函数中获得与画笔相关的所有属性值,包括画笔颜色、画笔线宽、画笔风格、画笔顶端风格以及画笔连接点风格,共同构成,QPen,对象,并调用,PaintArea,对象的,setPen(),函数设置,PaintArea,对象的画笔属性。其他与画笔参数相关的响应函数完成的工作与此类似,具体代码如下:,void MainWidget:ShowPenColor(),QColor color=QColorDialog:getColor(Qt:blue);,penColorFrame-setPalette(QPalette(color);,int value=penWidthSpinBox-value();,Qt:PenStyle style=Qt:PenStyle(penStyleComboBox-itemData(,penStyleComboBox-currentIndex(),Qt:UserRole).toInt();,Qt:PenCapStyle cap=Qt:PenCapStyle(penCapComboBox-itemData(,penCapComboBox-currentIndex(),Qt:UserRole).toInt();,Qt:PenJoinStyle join=Qt:PenJoinStyle(penJoinComboBox-itemData(,penJoinComboBox-currentIndex(),Qt:UserRole).toInt();,paintArea-setPen(QPen(color,value,style,cap,join);,7.3.2,主窗口的实现,ShowPenWidth(),槽函数的具体实现代码如下:,void MainWidget:ShowPenWidth(int value),QColor color=penColorFrame-palette().color(QPalette:Window);,Qt:PenStyle style=Qt:PenStyle(penStyleComboBox-itemData(,penStyleComboBox-currentIndex(),Qt:UserRole).toInt();,Qt:PenCapStyle cap=Qt:PenCapStyle(penCapComboBox-itemData(,penCapComboBox-currentIndex(),Qt:UserRole).toInt();,Qt:PenJoinStyle join=Qt:PenJoinStyle(penJoinComboBox-itemData(,penJoinComboBox-currentIndex(),Qt:UserRole).toInt();,paintArea-setPen(QPen(color,value,style,cap,join);,7.3.2,主窗口的实现,ShowPenStyle(),槽函数的具体实现代码如下:,void MainWidget:ShowPenStyle(int styleValue),QColor color=penColorFrame-palette().color(QPalette:Window);,int value=penWidthSpinBox-value();,Qt:PenStyle style=Qt:PenStyle(penStyleComboBox-itemData(,styleValue,Qt:UserRole).toInt();,Qt:PenCapStyle cap=Qt:PenCapStyle(penCapComboBox-itemData(,penCapComboBox-currentIndex(),Qt:UserRole).toInt();,Qt:PenJoinStyle join=Qt:PenJoinStyle(penJoinComboBox-itemData(,penJoinComboBox-currentIndex(),Qt:UserRole).toInt();,paintArea-setPen(QPen(color,value,style,cap,join);,7.3.2,主窗口的实现,ShowPenCap(),槽函数的具体实现代码如下:,void MainWidget:ShowPenCap(int capValue),QColor color=penColorFrame-palette().color(QPalette:Window);,int value=penWidthSpinBox-value();,Qt:PenStyle style=Qt:PenStyle(penStyleComboBox-itemData(,penStyleComboBox-currentIndex(),Qt:UserRole).toInt();,Qt:PenCapStyle cap=Qt:PenCapStyle(penCapComboBox-itemData(,capValue,Qt:UserRole).toInt();,Qt:PenJoinStyle join=Qt:PenJoinStyle(penJoinComboBox-itemData(,penJoinComboBox-currentIndex(),Qt:UserRole).toInt();,paintArea-setPen(QPen(color,value,style,cap,join);,7.3.2,主窗口的实现,ShowPenJoin(),槽函数的具体实现代码如下:,void MainWidget:ShowPenJoin(int joinValue),QColor color=penColorFrame-palette().color(QPalette:Window);,int value=penWidthSpinBox-value();,Qt:PenStyle style=Qt:PenStyle(penStyleComboBox-itemData(,penStyleComboBox-currentIndex(),Qt:UserRole).toInt();,Qt:PenCapStyle cap=Qt:PenCapStyle(penCapComboBox-it
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!