QPainter绘图类简单介绍

QPainter绘图

Qt的二维绘图功能是使用QPainter在绘图设备上绘图,绘图设备包括QWidget、QPixmap、QPainter、QImge等,作为Qt的三大基类之一的QWidget是最常见的绘图设备,QWideget类及其派生的子类,都有一个事件处理函数paintEvent(),在组件界面或者当前类的界面需要绘图时,就要重写这个绘图的事件处理函数,当有绘图指令时,系统会自动运行paintEvent()函数进行绘制图形。QPainter能在各种绘图设备上实现绘制图形功能的基本的类,如基于QWidget的各种Qt界面及组件的图形显示效果就是由QPainter实现。下面介绍QPainter、QPixmap的简单使用
一般绘画都会有一个画家、笔、颜色、刷子、绘画的板子纸张屏幕等,可以将QPainter创建的对象看做画家,绘画的板子、纸张、屏幕看做绘图的设备,即在哪个地方绘画,在界面上绘图,就需要重写绘图事件paintEvent()函数。

QPainter绘图主要是用QPainter的接口绘制各种图形,如点、直线、矩形、圆形、多边形、图片和文字等。绘制图形可以设置线条的风格(虚线、实线等)、线条的颜色,文字的特性,还有绘制图形的填充等,主要与QPen类、QBrush类、QFont类等有关。有关于这几个类这里不再介绍。

设置渲染:setRenderHint(),参数是枚举类型,如QPainter::SmoothPixmapTransform,可查看帮助文档
绘制文本:drawText()

注意:
如果指定绘图设备,也就是图片画在什么的板子,那个板子如果是当前窗体, 就是让当前窗体显示你所绘制的图片,那么一定要在paintEvent()函数中实现
如: painter(this)的就是指定绘制在窗体上,不是某个部件,如果指定QPainter对象的构造函数是this,只有在paintEvent()重写的函数中才能将图形绘制到窗体,绘制以后同时要调用update()进行窗体更新
如下代码:

void Father::paintEvent(QPaintEvent *event){
   
	QPainter painter(this);
	QPixmap pix(size());
	pix.load("美女.png);
	QRect rect(0,0,100 ,100);
	painter.drawPixmap(rect,pix);
	update();
}

例如:在别的函数中QPainter的对象的构造函数参数是this,那么图形不能绘制到窗体
以下的函数不能实现图形绘制到窗体并且显示

void Father::getRoundImages(){
   
	QPainter painter(this);
	QPixmap pix(size());
	pix.load("美女.png);
	QRect rect(0,0,100 ,100);
	painter.drawPixmap(rect,pix);
}

(一)重写paintEvent()函数绘制基本图形

(1)在当前窗体绘制图形

详情,painter其参数是this,即绘图设备是当前界面,当前窗体(界面)的大小设置为(300,200),给画家设置画笔的颜色为红色setPen(QColor(Qt::red)),笔的宽度为20,pen.setWidth(20);,也可以定义一个笔,设置好笔的属性然后传给painter。绘制图形即调用对应的绘制图形的函数,如绘制直线drawLine()。

void painterTest::paintEvent(QPaintEvent *event)
{
   
    //创建Qpainter对象
    QPainter painter(this);
    //painter.setPen(QColor(Qt::red));
    QPen pen;
    pen.setWidth(20);
    pen.setColor(QColor(Qt::red));
    painter.setPen(pen);

   //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值