20.QT-Qpixmap实现图片鼠标缩放,鼠标拖动示例(详解)
通过 QPainter 绘画实现,以本地图片985*740为例 如下图所示: 效果如下所示: 实现原理 主要通过以下函数实现: void QPainter::drawTiledPixmap ( int x, int y, int w int h const QPixmap & pixmap, int sx = 0 , int sy = 0 ); // 平铺显示pixmap // x y w h :表示绘画区域 // sx sy :表示Qpixmap绘画起始位置 只要算出x y w h sx sy就能实现超出窗口不显示的效果 举个例子,如下图所示,居中显示 1200*1200 时: 当图片左偏移600时,也就是 offset=-600 时,则只能在窗口上 显示一半 的图片: 代码实现 widget.h: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QtGui> class Widget : public QWidget { Q_OBJECT private : QPixmap * pix; int action; // 动作(放大,缩小,移动...) int pixW; // 图片宽 int pixH; // 图片高 QRect Paint; // 绘画区域