绘图设备:
QPixmap:针对屏幕进行优化了,和平台相关
QImage:和平台无关,可以对图片进行修改,在线程中绘图
QPicture:保存绘图的状态,保存为二进制文件
画背景图
创建一个widget项目。
在.h文件中添加paintEvent()函数
protected:
//重写绘图事件
//如果在窗口绘图,必须在绘图事件里实现
//绘图事件内部自动调用,窗口需要重绘的时候(状态改变)
void paintEvent(QPaintEvent *);
按F4,编写槽函数
void Widget::paintEvent(QPaintEvent *){
//QPainter p(this);
QPainter p; //创建画家对象
p.begin(this); //指定当前窗口为绘图设备
//绘图操作
//画背景图
p.drawPixmap(0,0,width(),height(), QPixmap("../Image/7D016817BF7BEE8D56116FCBA333DBFB.jpg"));
p.end();
}
这个图片文件要和放在同一目录下。
QPixmap("…/Image/7D016817BF7BEE8D56116FCBA333DBFB.jpg"));中7D016817BF7BEE8D56116FCBA333DBFB.jpg是图片名。
width(),height()会自动获取窗口的高度和宽度。
便生成了以该图片为背景的窗口。
画图形
先加上头文件
#include <QPen>
在槽函数中加上
void Widget::paintEvent(QPaintEvent *){
//QPainter p(this);
QPainter p; //创建画家对象
p.begin(this); //指定当前窗口为绘图设备
//绘图操作
//定义笔
QPen pen;
pen.setWidth(5); //设置线宽
//pen.setColor(Qt::red); //设置颜色
pen.setColor(QColor( 14, 9, 234)); //rgb设置颜色
pen.setStyle(Qt::DashLine); //设置风格
//把画笔交给画家
p.setPen(pen);
//画直线
p.drawLine(50,50,200,50);
p.drawLine(50,50,50,200);
//创建画刷对象
QBrush brush;
brush.setColor(Qt::red); //设置颜色
brush.setStyle(Qt::Dense1Pattern); //设置样式
//把画刷交给画家
p.setBrush(brush);
//画矩形
p.drawRect(150,150,100,50);
//画椭圆
p.drawEllipse(QPoint(150,150), 50, 25);
p.end();
}