Qt(12):画笔,画刷,反走样以及渐变

画笔和画刷的设置:

[0]:QBrush定义了QPainter的填充模式,具有样式、颜色、渐变以及纹理等属性。样式可以调用setstyle函数来设置,颜色可以用setcolor设置,纹理可以用settexture来设置.

[1]:渐变的设置主要依靠QGradient对象,Qt提供了三种渐变,下面通过代码来认识线形渐变的使用:
void Painttest::paintEvent(QPaintEvent*  )//重写事件回调函数
{    
QPainter painter(this);//创造画笔,并且设置该画笔的区域是该Widget,
painter.setPen(QPen(Qt::green,5,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin));//设置画笔的属性,画笔宽度是5
QLinearGradient gradient(50, 50, 200, 200);//创建线形渐变对象,同时制定渐变的区间
gradient.setColorAt(0.2, Qt::white);//设置渐变区间在1/5处的颜色
gradient.setColorAt(0.6, Qt::green);
gradient.setColorAt(1.0, Qt::black);

painter.setBrush(QBrush (gradient));//设置画刷的属性
painter.drawEllipse(50,50,200,150);
}

[2]画笔:

QPen定义了用于QPainter应该怎样画线或者轮廓线。画笔具有样式、宽度、画刷、笔帽样式和连接样式等属性。画笔的样式style()定义了线的样式。画刷brush()用于填充画笔所绘制的线条。笔帽样式capStyle()定义了使用QPainter绘制的线的末端;连接样式joinStyle()则定义了两条线如何连接起来。画笔宽度width()或widthF()定义了画笔的宽。注意,不存在宽度为 0 的线。假设你设置 width 为 0,QPainter依然会绘制出一条线,而这个线的宽度为 1 像素。也就是说,画笔宽度通常至少是 1 像素。 这么多参数既可以在构造时指定,也可以使用 set 函数指定,完全取决于你的习惯,例如:

QPainter painter(this); QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen); 
//等价于
 QPainter painter(this); QPen pen; // creates a default pen pen.setStyle(Qt::DashDotLine); pen.setWidth(3); pen.setBrush(Qt::green); pen.setCapStyle(Qt::RoundCap); pen.setJoinStyle(Qt::RoundJoin); painter.setPen(pen);

[3]反走样:painter.setRenderHint(QPainter::Antialiasing, true);

[4]:角度渐变

void Painttest::paintEvent(QPaintEvent*  )//重写事件回调函数
{    
QPainter painter(this);//创造画笔,并且设置该画笔的区域是该Widget,
 painter.setRenderHint(QPainter::Antialiasing, true);//设置反走样
 const int r = 150;
  painter.translate(2*r,2*r);//将原来的(2r,2r)设置为原点
 QConicalGradient gradient(0,0,0);//参数代表角度中心以及起始角度
  gradient.setColorAt(0,Qt::red);
 gradient.setColorAt(1.0/6,Qt::yellow);
 gradient.setColorAt(2.0/6,Qt::green);
 gradient.setColorAt(3.0/6,Qt::cyan);
 gradient.setColorAt(4.0/6,Qt::blue);
 gradient.setColorAt(5.0/6,Qt::magenta);
 gradient.setColorAt(1,Qt::red);
 painter.setBrush(QBrush(gradient));
 painter.setPen(Qt::NoPen);
 painter.drawEllipse(QPoint(0,0),r,r);

}

Qt(12):画笔,画刷,反走样以及渐变_第1张图片

你可能感兴趣的:(Qt(12):画笔,画刷,反走样以及渐变)