目录
前言
需要用Qt显示视频,所以需要对QPainter了解。详细参见Qt之图形(QPainter的基本绘图)
QPainter函数介绍
绘图系统由
QPainter完成具体的绘制操作,QPainter类提供了大量高度优化的函数来完成GUI所需要的大部分工作。它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,例如:点、线、矩形、弧形等。QPainter也支持一些高级特性,例如反走样。
setRenderHint()setPen()
painter.setPen(QPen(QColor(0, 160, 230), 2));
设置画笔颜色
setBrush()
设置画刷颜色,可以在画矩形的时候,填充矩形的颜色。drawPixmap()
painter.drawPixmap(rect(), QPixmap(":/Images/logo"));
我们可以在资源文件中添加logo文件然后显示,也可以把图片放置在可执行程序的目录下,执行的时候就可以找到这个文件了。
- setFont
// 设置字体:微软雅黑、点大小50、斜体
QFont font;
// 设置字体属性
font.setFamily("Microsoft YaHei");
font.setPointSize(50);
font.setItalic(true); // 斜体
painter.setFont(font); //
drawText
其实电脑上所有的东西都是绘制出来的,也就是所有的文字都是绘制出来的。
代码
- main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
- mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent * event)
{
//painter in MainWindow
QPainter painter(this);
painter.setPen(Qt::green);
painter.drawLine(50, 50, 500, 50);
painter.drawLine(QPoint(20, 30), QPoint(20, 400));
// 这里如果我们把画刷设置为白色,然后绘制整个区域,就会把以前绘制的都覆盖掉
// painter.setBrush(Qt::white);
// painter.drawRect(this->rect());
painter.setBrush(Qt::blue);
painter.drawRect(20, 20, 50, 50);
painter.setBrush(Qt::yellow);
painter.drawRect(80, 20, 50, 50);
painter.setBrush(QBrush(Qt::red));
painter.drawEllipse(QPoint(120, 120), 40, 30);
QPixmap pix("0.bmp");
painter.drawPixmap(200, 80, pix);
QFont font;
font.setFamily("黑体");
font.setPointSize(22);
painter.setFont(font);
// change painter color
painter.setPen(QPen(Qt::red));
painter.drawText(200, 40, "Hello World");
}
- mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void paintEvent(QPaintEvent *);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
总结
其实这一篇非常简单,但是总是要写完整些!有些强迫症!学习!分享!感谢!
706



被折叠的 条评论
为什么被折叠?



