天天看點

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繪制方法

繼續閱讀