您的位置:首页 > 编程语言 > Qt开发

Qt 基本绘图技术

2016-06-29 11:33 246 查看

Qt 基本绘图

关于Qt基本绘图简单介绍一下,也算是给自己加深印象,mark一下

首先要重写基类的paintEvent(QPaintEvent*) 事件,在paintEvent函数中就可以开始自己的绘图,如果需要对鼠标事件处理就重写相应的鼠标事件函数如:mouseMoveEvent(QMouseMoveEvent*),好了,废话不多说,这里只是简单的展示绘图,不涉及鼠标

下面是自己的一个示例代码,仅供参考:

void MainWindow::paintEvent(QPaintEvent *event)
{

QRadialGradient gradient(50, 50, 50, 50, 50);
gradient.setColorAt(0, QColor::fromRgbF(0, 1, 0, 1));
gradient.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0));

QPainter paint(this);

//角度渐变
paint.setRenderHint(QPainter::Antialiasing);
const int r = 150;
QConicalGradient conicalGradient(0, 0, 0); //角度渐变,前两个参数是渐变的中心点,后一个是渐变的起始角度
conicalGradient.setColorAt(0.0, Qt::red);
conicalGradient.setColorAt(60.0/360.0, Qt::yellow); //参数是角度比列和颜色
conicalGradient.setColorAt(120.0/360.0, Qt::green);
conicalGradient.setColorAt(180.0/360.0, Qt::cyan);
conicalGradient.setColorAt(240.0/360.0, Qt::blue);
conicalGradient.setColorAt(300.0/360.0, Qt::magenta);
conicalGradient.setColorAt(1.0, Qt::red);
paint.translate(r, r);                      //改变坐标原点
QBrush brush(conicalGradient);
paint.setPen(Qt::NoPen);
paint.setBrush(brush);
paint.drawEllipse(QPoint(0, 0), r, r);
//渐变(线性渐变、辐射渐变、角度渐变)
QLinearGradient linearGradient(60, 50, 200, 200);//线性渐变
linearGradient.setColorAt(0.2, Qt::white);
linearGradient.setColorAt(0.6, Qt::green);
linearGradient.setColorAt(1.0, Qt::black);
paint.setBrush(QBrush(linearGradient));
paint.drawEllipse(150, 50, 200, 150);

paint.drawLine(80, 100, 650, 500);
paint.setPen(Qt::red);
paint.drawRect(10, 150, 100, 400);
paint.setPen(QPen(Qt::green, 5));
//paint.setBrush(Qt::blue);
paint.setBrush(gradient);
paint.drawEllipse(450, 150, 400, 200);
paint.setRenderHint(QPainter::Antialiasing, true);  //消除锯齿(反走样),为了提高效率一般不进行反走样
paint.drawEllipse(50, 150, 400, 200);

//分别设置画刷、线样式(虚线/实线)、笔帽样式(线的末端)、连接样式(线拐角处)
QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);
paint.setPen(pen);
paint.drawRect(200, 150, 400, 200);

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: