几何图形的绘制

时间:2021-02-07 23:28:50

常用:

Line: 直线

Rect:长方形

Ellipse:椭圆

Arc:圆弧

Chord:封闭圆弧

polygon:多边形

指定颜色:

QColor  green(0,0XFF,0)

QColor  whitte (0XFF,0XFF,0XFF)

QColor black (0,0,0)

qt中有两种绘制参数

QPen:负责线条的颜色和风格

QBrush:负责填充的颜色和风格

对于非封闭形状是不填充的


画图事件:

void paintEvent (QPaintEvent * event)

{

QPainter painter(this);

int  width=this->width();

int height=this->height();

//设置整个控件的背景色

painter.setBrush(QBrush(QColor(0x0,0x0,0x0)));

painter.drawRect(0,0,width,height);

//控制如何绘制外围的线条

QColor  green(0,0xFF,0);

QPen   pen(green);

pen.setStyle(Qt::DashDotDotLine);//设置线条的模式,这是点画线。

pen.setWidth(3);//设置线条的宽度

//具体的画笔和填充的格式可以参考手册

painter.setPen(pen);


QBrush  brush(QColor(0xFF,0,0));

painter.setBrush(brush);


painter.drawRect(10,10,50,30);

}

QPoint:描述了一个点坐标

QSize:   描述了宽度和高度

QRect: 描述了一个矩形的坐标和大小


//动画的实现

m_timerId=startTimer(1000);//启动定时器,指定时间间隔(毫秒)

m_times=0;


void paintEvent(QPaintEvent * event)

{

QPainter painter(this);

if(m_times==0)

{

QBrush brush(QColor(0x00,0xff,0));

painter.serBrush(brush);

m_times ++;

}

else

{

QBrush brush(QColor(0x88,0x88,0x88));

painter.setBrush(brush);

m_times=0;

}

painter.drawEllipse(10,10,40,40);

}

void timerEvent (QTimerEvent * event)

{

if(event->timerId()==m_timerId)

{

update();//重绘

}

}

update()函数只是通知界面重新绘制,会在事件循环中产生一个“绘制事件” paint event,在适合的时候才重新绘制。