用Qt实现2D绘图
来源:互联网 发布:win7仿mac任务栏 编辑:程序博客网 时间:2024/06/16 08:14
- 新建Gui应用程序,基类选择QWidget
- widget.h代码:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
protected:
void paintEvent(QPaintEvent *event);
};
#endif // WIDGET_H
- widget.cpp代码
#include "ui_widget.h"
#include <QPainter>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawLine(QPoint(0,0),QPoint(100,100));
//创建画笔
QPen pen(Qt::green,5,Qt::DotLine,Qt::RoundCap,Qt::RoundJoin);
painter.setPen(pen);
QRectF rectangle(70.0,40.0,80.0,60.0);
int startAngle=30*16;
int spanAngle=120*16;
painter.drawArc(rectangle,startAngle,spanAngle);
pen.setWidth(1);
pen.setStyle(Qt::SolidLine);
painter.setPen(pen);
//绘制一个矩形
painter.drawRect(160,20,50,40);
//创建画刷
QBrush brush(QColor(0,0,255),Qt::Dense4Pattern);
//使用画刷
painter.setBrush(brush);
//绘制画刷
painter.drawEllipse(220,20,50,50);
//设置纹理
brush.setTexture(QPixmap("yafeilinux.png"));
//重新使用画刷
painter.setBrush(brush);
//定义四个点
static const QPointF points[4]={
QPointF(270.0,80.0),
QPointF(290.0,10),
QPointF(350.0,30),
QPointF(390.0,50)
};
painter.drawPolygon(points,4);
painter.fillRect(QRect(10,100,150,20),QBrush(Qt::darkYellow));
painter.eraseRect(QRect(50,0,50,120));
//线性渐变
QLinearGradient linearGradient(QPointF(40,190),QPointF(70,190));
//插入颜色
linearGradient.setColorAt(0,Qt::yellow);
linearGradient.setColorAt(0.5,Qt::red);
linearGradient.setColorAt(1.0,Qt::green);
//指定渐变区域以外的区域的扩散方式
linearGradient.setSpread(QGradient::RepeatSpread);
//使用渐变作为画刷
painter.setBrush(linearGradient);
painter.drawRect(10,170,90,40);
//辐射渐变
QRadialGradient radialGradient(QPointF(200,190),50,QPointF(275,200));
radialGradient.setColorAt(0,QColor(255,255,100,150));
radialGradient.setColorAt(1,QColor(0,0,0,50));
painter.setBrush(radialGradient);
painter.drawEllipse(QPointF(200,190),50,50);
//锥形渐变
QConicalGradient conicalGradient(QPointF(350,190),60);
conicalGradient.setColorAt(0.2,Qt::cyan);
conicalGradient.setColorAt(0.9,Qt::black);
painter.setBrush(conicalGradient);
painter.drawEllipse(QPointF(350,190),50,50);
//画笔使用线性渐变来绘制直线和文字
painter.setPen(QPen(linearGradient,2));
painter.drawLine(0,280,100,280);
painter.drawText(150,280,tr("helloQt"));
}
Widget::~Widget()
{
delete ui;
}
- 运行结果:
![](http://static.oschina.net/uploads/space/2013/0505/163511_vW9W_574191.png)
FROM: http://my.oschina.net/u/574191/blog/127610
0 0
- 用Qt实现2D绘图
- 2D绘图 (Qt)
- 2D绘图 (Qt)
- QT--2D绘图
- Qt 2D绘图
- Qt 2D绘图
- Qt 2D绘图
- 使用QT 2D绘图实现窗体的阴影效果
- 2D简单绘图---QT
- Qt之2D绘图
- Qt之2D绘图
- QT的2D绘图
- Qt 2D绘图之Qt坐标
- 【QT技术应用】2D绘图(2)
- Qt 2D绘图 渐变填充
- 【QT技术应用】2D绘图
- 【QT技术应用】2D绘图(1)
- 【技术应用】2D绘图 (Qt)
- NES 6502
- NoSQL是什么
- java 理解CAS
- Can't load IA 32-bit .dll on a AMD 64-bit platform
- Oracle dblink详解(转)
- 用Qt实现2D绘图
- LeetCode Isomorphic Strings 哈希
- 前端必读:浏览器内部工作原理
- 开通博客了
- QT下简易画板实现
- 使用sudo时user is not in sudoers file的解决
- 达内学习日志Day28:表的创建
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J
- tomcat启动startup.bat一闪而过