Цитата |
---|
Andrey Gheleznyakov пишет: Вообще то вы поставили себе задачу - координаты мыши не менять. Тогда зачем новые координаты мыши? От координат точки в пикселах в новом масщтабе х,у надо отнять положение мыши, где она была (как в пункте 1) и присвоить полученные значения mapView->SetMapLeftTop |
Попробовал два варианта, вычитание из новых x,y старых x,y(в примере x2,y2) которые взяты как координаты мыши + GetMapLeftTop и второй пример которые взяты только как координаты мыши. Не работают оба варианта?
Код |
---|
long int x=QCursor::pos().x(); long int y=QCursor::pos().y(); int valx=0, valy=0; mapView->GetMapLeftTop(&valx, &valy); x+=valx; y+=valy; int x2 = x; int y2 = y; mapChangeViewScale(mapView->GetMapHandle(),&x,&y,2); int diffX = x - x2; int diffY = y - y2; mapView->SetMapLeftTop(diffX, diffY); |
и
Код |
---|
long int x=QCursor::pos().x(); long int y=QCursor::pos().y(); int x2 = x; int y2 = y; int valx=0, valy=0; mapView->GetMapLeftTop(&valx, &valy); x+=valx; y+=valy; mapChangeViewScale(mapView->GetMapHandle(),&x,&y,2); int diffX = x - x2; int diffY = y - y2; mapView->SetMapLeftTop(diffX, diffY); |
Но я так понимаю что надо как-то учитывать что масштаб поменялся? Помогите:)