线性渐变生成渐变色集合
示例代码
void Widget::paintEvent(QPaintEvent *event)
{
//QT线性渐变绘制
QLinearGradient linearGradient(0, 0, 500, 0);
linearGradient.setColorAt(0, Qt::green);
linearGradient.setColorAt(0.5, Qt::blue);
linearGradient.setColorAt(1, Qt::red);
//colorImage.fill(QColor(0,0,0,0));
QPainter colorPainter(this);
colorPainter.setPen(Qt::NoPen);
colorPainter.setBrush(linearGradient);
colorPainter.drawRect(QRect(0,0,500,100));
//生成渐变色绘制
//示例为绿色-蓝色-红色等分渐变 两色之间的渐变为250个点
QColor colorGreen = QColor(Qt::green);
QColor colorRed = QColor(Qt::red);
QColor colorBlue = QColor(Qt::blue);
QColor colorList[500];
for (int i=0;i < 250;i++) {
float p = i / float(250);
colorList[i].setRed(int((1.0-p) * colorGreen.red() + p * colorBlue.red() + 0.5));
colorList[i].setGreen(int((1.0-p) * colorGreen.green() + p * colorBlue.green() + 0.5));
colorList[i].setBlue(int((1.0-p) * colorGreen.blue() + p * colorBlue.blue() + 0.5));
}
for (int i=0;i < 250;i++) {
float p = i / float(250);
colorList[i + 250].setRed(int((1.0-p) * colorBlue.red() + p * colorRed.red() + 0.5));
colorList[i + 250].setGreen(int((1.0-p) * colorBlue.green() + p * colorRed.green() + 0.5));
colorList[i + 250].setBlue(int((1.0-p) * colorBlue.blue() + p * colorRed.blue() + 0.5));
}
QImage colorImage = QImage(500,100,QImage::Format_ARGB32);
for (int i=0;i<100;i++) {
for (int j=0;j<500;j++) {
colorImage.setPixel(QPoint(j,i),colorList[j].rgb());
}
}
colorPainter.drawImage(QRect(0,102,500,100),colorImage);
colorPainter.end();
}
运行示例
上面色块为QLinearGradient线性渐变的画刷绘制
下面的即自己生成的渐变色集合打点绘制