天天看点

QPainter绘制方法

效果

QPainter绘制方法

1 绘制点

QPainter painter(this);
	painter.setPen(QPen(QColor(255,255,255),2));	//后面参数2为点的大小
	QPoint dotPos = QPoint(100,100);
	painter.drawPoint(dotPos);
           

2 绘制直线

QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing); //抗锯齿,绘制出来看起来不会有楼梯形状的锯齿感
    painter.setPen(QPen(QColor(255,255,255),2));   //后面参数2为线条的粗细
    painter.drawLine(QPoint(0,0),QPoint(100,100));
           

3 绘制矩形

4 绘制圆角矩形

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
  	painter.drawRoundedRect(rectangle, 20.0, 15.0);
           

5 绘制圆

6 绘制文字

QPainter painter(this);
	QRectF rect(0, 0, 100, 50);		//文字显示区域
    painter.drawText(rect, Qt::AlignHCenter, QString::number(1234));//字体居中
           

7 绘制多边形

QPointF points[4];
    points[0] = m_drawArea.topRight();
    points[1] = m_drawArea.topLeft();
    points[2] = m_drawArea.bottomRight();
    points[3] = m_drawArea.bottomLeft();
    
    painter.drawPolygon(points, angleMapLen.size());    //绘制多边形
           

8 绘制扇型

函数原型:

void QPainter::drawPie(const QRect &, int a, int alen)

参数1: 圆弧的圆心所处于矩形 (扇型圆心为矩形中心)

参数2: 圆弧的开始始的角度°(单位1/16度)

参数3: 圆弧的 转动 的角度°(单位1/16度)

9 形状填充

对于绘制闭合的图像,可以设置填充,如圆、多边形等,代码如下:

QBrush brush(QColor(0, 0, 255, 50), Qt::Dense1Pattern);		//后面参数为填充样式
painter.setBrush(brush);    //使用画刷
           

怎么使用?以圆为例子,把上面代码加在绘制之前就行了,如下:

QPainter painter(this);
	painter.setRenderHint(QPainter::Antialiasing);    //抗锯齿
	painter.setPen(QPen(QColor(255,255,255),2));	//后面参数2为线条的粗细
	QBrush brush(QColor(0, 0, 255, 50), Qt::Dense1Pattern);		//后面参数为填充样式
	painter.setBrush(brush);    //使用画刷
	painter.drawEllipse(QPoint(100,100),100,100);
           

对于填充,可以选择多种填充样式

填充样式格式如下:

QPainter绘制方法

10 绘制图片

QPainter painter(this);
    QRect rect(0,0,200,200);
    painter.drawImage(rect,*mImage);
           

11 绘制圆弧

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
	int startAngle = 30 * 16;
  	int spanAngle = 120 * 16;
  	QPainter painter(this);
  	painter.drawArc(rectangle, startAngle, spanAngle);
           
QPainter绘制方法

12 绘制弦

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
  int startAngle = 30 * 16;
  int spanAngle = 120 * 16;

  QPainter painter(this);
  painter.drawChord(rect, startAngle, spanAngle);
           
QPainter绘制方法

13 绘制路径

QPainterPath path;
  path.moveTo(20, 80);
  path.lineTo(20, 30);
  path.cubicTo(80, 0, 50, 50, 80, 80);

  QPainter painter(this);
  painter.drawPath(path);
           
QPainter绘制方法

继续阅读