Qt多边形的线性梯度
Qt Linear gradient for polygons
我想用线性渐变颜色填充多边形,我不知道如何实现它。到目前为止,我使用以下代码:
std::vector<Element*> elems = m_mesh->getElements();
for (unsigned int i=0; i<elems.size(); ++i)
{
std::vector<Node*> nodes = elems[i]->getNodes();
QPolygon elepolygon;
unsigned int j;
for (j=0; j<nodes.size(); ++j)
{
elepolygon << QPoint(nodes[j]->x()*scalex+shiftx,nodes[j]->y()*scaley+shifty);
}
int r = qrand() % ((255 + 1) - 0);
int g = qrand() % ((255 + 1) - 0);
int b = qrand() % ((255 + 1) - 0);
QBrush brush(QColor(r,g,b));
QPainterPath tmpPath;
tmpPath.addPolygon(elepolygon);
painter.fillPath(tmpPath,brush);
painter.drawPolygon(elepolygon);
}
你可以创建一个QLinearGradient
,使用setColorAt
函数在不同的停止点设置颜色,并将画家的画笔设置为创建的QLinearGradient
:
painter->setPen(QPen(Qt::black, 3));
QLinearGradient gradient(-400,-400,400,400);
gradient.setColorAt(0, QColor(110,110,110));
gradient.setColorAt(0.27, QColor(230,230,230));
gradient.setColorAt(0.44, QColor(110,110,110));
gradient.setColorAt(0.76, QColor(230,230,230));
gradient.setColorAt(1, QColor(110,110,110));
painter->setBrush(gradient);
painter->drawPolygon(elepolygon);
在本例中,插值区域介于(-400,-400)和(400,400)之间。你可以任意设置渐变方向
相关文章:
- 计算缩放多边形的比例,得到给定的多边形面积
- 向量上的线性搜索
- 将QGraphicsItem的移动区域限制在多边形区域内
- 二叉搜索如何比线性搜索更快?
- 线性丢番图方程 - 求给定区间内的解数和解
- 重新排列单线以形成闭合多边形?
- 提升几何体:C++并集多个多边形
- 查找自动生成键并具有线性内存消耗的小型关联数组
- 为什么字符串比较的 == 运算符相对于任一字符串长度线性时间(似乎)?
- 线性优化目标函数中的绝对值
- 在 QT C++中绘制/操作多边形
- Maya API C++:从多边形获取材质
- 添加带有提升的多边形::p奥利贡不编译?
- 犰狳C++:带有模量计算的线性组合
- 使用 C++在 OpenGL 中对 3D 多边形进行纹理处理
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 如何使用增强::几何计算多边形的旋转固体体积?
- C++(线性搜索和排序)
- 一般采用可索引/可调用的线性组合
- Qt多边形的线性梯度