• 7383阅读
  • 3回复

[提问]使用QPainter 绘制QPixmap,怎么实现按键后,图片缩放中心在图片中心。 [复制链接]

上一主题 下一主题
离线lvhuat
 
只看楼主 倒序阅读 楼主  发表于: 2013-02-28
//
以下代码实现了 按+键 图片伸, 按 - 键 图片缩
我得问题在于,伸缩的中心总是在图片的左上角,能否让图片的中心作为伸缩基准。
一切建议和帮助都感激不尽!
  1. void MainWindow::paintEvent(QPaintEvent *)
  2. {
  3.     QPixmap pixmap("sky.jpg");
  4.     painter->begin(this);
  5.     //painter->setWindow(-size().width()/2,-size().height()/2,size().width(),size().height());
  6.     painter->scale(m_s, m_s);
  7.     painter->drawPixmap(0, 0, pixmap);
  8.     painter->end();
  9. }
  10. void MainWindow::keyPressEvent(QKeyEvent *key)
  11. {
  12.     if(key->key() == Qt::Key_Plus){
  13.         m_s *= 1/0.958;
  14.         update();
  15.     }
  16.     if(key->key() == Qt::Key_Minus){
  17.         m_s *= 0.958;
  18.         update();
  19.     }
  20. }



//
离线uidab

只看该作者 1楼 发表于: 2013-02-28
回 楼主(lvhuat) 的帖子
painter->drawPixmap(0, 0, pixmap);

这里就是左上啊!
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线voidbroken

只看该作者 2楼 发表于: 2013-02-28
图片的缩放没有中心,只是你在画的时候从哪个点来画,
( 0, 0 ) 点是mainWindow的左上角,你每次都是从左上角开始按缩放比例来画图片, 你可以用painter.translate( -pixmap.width()/2, -pixmap.height()/2 ),这样你的缩放点就在原始图片中心了,只是有一半的图片内容不会出现在可显示区域内,要考虑图片的宽高,画板的宽高,通过计算中心点求差,你的意思是不是始终图片的中心点与画板的中心点想重合,这样的话自己算一下
离线pxiao_xiao

只看该作者 3楼 发表于: 2013-02-28
自己算一下 变换一下
快速回复
限100 字节
 
上一个 下一个