使用Qt5,我将QOpenGLWidget子类化,并且正在通过QPainter显示QImage。
现在,我希望能够以鼠标光标为中心进行放大和缩小。
在绘画循环中我:
void QOpenGLCanvas::paintGL()
{
QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glClear(GL_COLOR_BUFFER_BIT);
QPainter painter(this);
if (!img.isNull())
{
QPoint mousePos = mapFromGlobal(QCursor::pos());
painter.translate(mousePos);
painter.scale(zoomfactor, zoomfactor);
painter.drawImage(-mousePos, img);
}
painter.end();
}
这在鼠标静止不动时起作用,但是只要在两个绘制事件之间移动光标,图像就会“跳转”。
以下是抓屏,以显示正在发生的事情:https://www.youtube.com/watch?v=KyJ1xJGA0lQ
我已经尝试过将偏移量补偿到最后一个光标位置,但无法使其正常工作。我想念什么?