Qt 如何在pixmap上绘制道路(线)

Qt 如何在pixmap上绘制道路(线),qt,drawing,pixmap,mercator,Qt,Drawing,Pixmap,Mercator,我真的被困在Qt的Pixmap上绘制“道路”。 我所有的坐标都是分数,它们彼此非常接近(我用墨卡托公式将经度/纬度转换成X/Y坐标)。Qt drawLine函数只有整数参数可以在pixmap上绘制(例如,因为没有人会绘制2.5像素)。此外,坐标从左上角开始,所以我需要更改它,如下所示: Xold = x Ynew = Ymax - Y 现在我有了普通的X/Y坐标系,Y轴在顶部,X轴在左侧 这是我的代码,我是如何画线的: double minlat = 637800*log(tan(3.

我真的被困在Qt的Pixmap上绘制“道路”。 我所有的坐标都是分数,它们彼此非常接近(我用墨卡托公式将经度/纬度转换成X/Y坐标)。Qt drawLine函数只有整数参数可以在pixmap上绘制(例如,因为没有人会绘制2.5像素)。此外,坐标从左上角开始,所以我需要更改它,如下所示:

Xold = x
Ynew = Ymax - Y
现在我有了普通的X/Y坐标系,Y轴在顶部,X轴在左侧

这是我的代码,我是如何画线的:

    double minlat = 637800*log(tan(3.14/4+3.14*bounds[1]/360.0))/log(2.71),maxlat=637800*log(tan(3.14/4+3.14*bounds[2]/360.0))/log(2.71);
    std::vector<double> x;
    std::vector<double> y;
    QSize size = ui->label_2->size();
    size=ui->label_2->size();
    QImage pic(size.width(),size.height(),QImage::Format_ARGB32_Premultiplied);
    pic.fill(Qt::transparent);
    QPainter painter(&pic);
    for (unsigned int i=0; i < wayVector.size(); i++){
        for (unsigned int j=0; j<wayVector[i].refs.size(); j++){
            x.push_back(637800*3.14*nodeHash[wayVector[i].refs[j]].lon/180.0);
            y.push_back(637800*log(tan(3.14/4+3.14*nodeHash[wayVector[i].refs[j]].lat/360.0))/log(2.71));

        }
        for (unsigned int j=0; j<wayVector[i].refs.size()-1;j++){
            painter.setPen(Qt::green);
            double x1 = x[j]/(size.width()/(maxlon-minlon));
            double y1 = maxlat*size.height()/(maxlat-minlat)-y[j]*size.height()/(maxlat-minlat);
            double x2 = x[j+1]/(size.width()/(maxlon-minlon));
            double y2 = maxlat*size.height()/(maxlat-minlat)-y[j+1]*size.height()/(maxlat-minlat);
            painter.drawLine(x1,y1,x2,y2);
        }
        x.clear();
        y.clear();
    }
double minlat=637800*log(tan(3.14/4+3.14*bounds[1]/360.0))/log(2.71),maxlat=637800*log(tan(3.14/4+3.14*bounds[2]/360.0))/log(2.71);
std::向量x;
std::向量y;
QSize size=ui->label_2->size();
size=ui->label_2->size();
QImage pic(size.width(),size.height(),QImage::Format_ARGB32_预乘);
图片填充(Qt::透明);
QPainter painter(画师和图片);
for(无符号整数i=0;i对于(无符号整数j=0;j有5条不同的绘制线()函数。使用或。那些以
F
结尾的类型使用双精度。

顺便说一句,我不需要只使用Pixmap,可能有人会展示另一种方法。非常感谢,但是你知道如何从左上角坐标系移到默认坐标系,其中X/Y轴从左下角开始(就像我们经常画的那样)?