Qt5学习笔记(2)——二维图形
Qt的二维图形引擎是基于QPainter类的。QPainter既可以绘制几何形状(点、线、矩形、椭圆、弧形、弦形、饼状图多边形和贝塞尔曲线),也可以绘制像素映射图像和文字。
功能还是十分强大的,下面直接放我写的代码:
QPainter painter(this); QPen pen; // 画一条直线 //pen.setStyle(Qt::DashLine);//设置为虚线 pen.setColor(Qt::red);//设置画笔为红色 pen.setWidth(12);//设置画笔宽度 painter.setPen(pen);//设置画笔 painter.drawLine(rect().topLeft(), rect().bottomRight()); painter.drawLine(10,50,50,200); // 画多个点(5个) pen.setColor(Qt::gray);//设置画笔为红色 pen.setWidth(6);//设置画笔宽度 painter.setPen(pen);//设置画笔 QPointF pointf[5]; for (int i=0; i<5; ++i) { pointf[i].setX(20.0+i*50.0); pointf[i].setY(400.0); } painter.drawPoints(pointf, 5); // 画一个空心正方形 pen.setColor(Qt::darkRed); pen.setWidth(5); painter.setPen(pen); painter.drawRect(220, 5, 100, 100); // 画一个实心矩形 pen.setColor(Qt::red); pen.setWidth(8); painter.setPen(pen); QBrush bruch(Qt::SolidPattern);//画刷 bruch.setColor(Qt::green); painter.setBrush(bruch);//设置画刷 painter.drawRect(QRect(350, 10, 100, 200)); //画一个实心圆和扇形 pen.setColor(Qt::blue); pen.setWidth(13); painter.setPen(pen); bruch.setColor(Qt::red); painter.setBrush(bruch); painter.drawEllipse(500,10,150,150);//园,第1,2个参数分别表示圆距左上角的像素数。第3,4个参数表示圆的宽度和高度。 painter.drawPie(450,200,200,200,0,1000);//扇形,前四个参数定义圆(与drawEllipse()函数相同)。后两个参数定义圆的样式。0为起始角度(实际单位为1/16度),1000为扇形所展开的角度(单位也为1/16度)。 // 画一个多边形(三角形) QPolygonF polygon; polygon << QPointF(350.0, 320.0) << QPointF(400.0, 400.0) << QPointF(280.0, 400.0);//顺时针取点 pen.setColor(Qt::yellow); pen.setWidth(7); painter.setPen(pen); painter.setBrush(bruch); painter.drawPolygon(polygon, Qt::WindingFill); //画一个QString pen.setColor(Qt::black); QFont font("arial",25,QFont::Bold,true); //设置字体的类型,大小,加粗,斜体 font.setUnderline(true);//设置下划线 font.setOverline(true);//设置上划线 font.setCapitalization(QFont::SmallCaps);//设置小型字母大写 font.setLetterSpacing(QFont::AbsoluteSpacing,5);//设置间距 painter.setFont(font);//添加字体 painter.setPen(pen); painter.drawText(50, 300, "windows QT"); //显示中文字 pen.setColor(Qt::black); QFont font1("宋体",12,QFont::DemiBold,false); //设置字体的类型,大小,黑体,不斜体 font.setUnderline(false);//设置下划线 font.setOverline(false);//设置上划线 font.setLetterSpacing(QFont::AbsoluteSpacing,1);//设置间距 painter.setFont(font1);//添加字体 painter.setPen(pen); painter.drawText(245, 130, "正方形"); painter.drawText(380, 235, "矩形"); painter.drawText(557, 185, "圆形"); painter.drawText(320, 425, "三角形"); painter.drawText(580, 325, "扇形");
下面是代码运行的结果: