我目前正致力于使用QPainter和QImage生成"热图".我的方法包括绘制多个圆圈,黑色到透明的QRadialGradients作为QBrush(参见"强度图").然后我将渐变映射应用于强度图以获得所需的"热图"效果(请参阅"渐变映射后").
我在"After Gradient Map"图像中更明显的问题是圆圈没有正确混合.圆圈重叠的地方似乎部分混合,但是朝向边缘,您可以清楚地看到圆圈的终点(几乎是外部发光).我想要一个效果,圆圈之间没有可见的边框和正确的混合.
强度图

渐变映射后(不同强度图)

码
// Setup QImage and QPainter
QImage *map = new QImage(500, 500, QImage::Format_ARGB32);
map->fill(QColor(255, 255, 255, 255));
QPainter paint(map);
paint.setRenderHint(QPainter::HighQualityAntialiasing);
// Create Intensity map
std::vector<int> record = disp_data[idx]; // Data
for(int j = 1, c = record.size(); j < c; ++j) {
int dm = 150 + record[j] * 100 / 255; // Vary the diameter
QPen g_pen(QColor(0, 0, 0, 0));
g_pen.setWidth(0);
QRadialGradient grad(sensors[j-1].x, sensors[j-1].y, dm/2); // Create Gradient
grad.setColorAt(0, QColor(0, 0, 0, record[j])); …Run Code Online (Sandbox Code Playgroud)