• 6379阅读
  • 12回复

问一个非常专业的问题。。 [复制链接]

上一主题 下一主题
离线robertkun
 

只看楼主 倒序阅读 楼主  发表于: 2009-05-27
问一个非常专业的问题,怎样通过拖动鼠标改变插入图片的大小?

插入图片的功能已经实现,如何改变大小呢?希望能够提供一些具体的代码。。

(说一下我的想法,通过MOUSE 拖动事件,改变选中图片的大小,不知道怎样实现。。)


新手上路,大侠们多帮帮忙撒。谢谢了。。在线等。。


                                              简单的生活使人快乐!
离线bingogo
只看该作者 1楼 发表于: 2009-05-27
是这个意思吗?
显示一个图片并使其随窗体同步缩放
离线robertkun

只看该作者 2楼 发表于: 2009-05-27
引用第1楼bingogo于2009-05-27 16:34发表的  :
是这个意思吗?
显示一个图片并使其随窗体同步缩放



不是我想通过拖动图像的一角或边,来改变图片的大小。。
                                              简单的生活使人快乐!
离线duduqq

只看该作者 3楼 发表于: 2009-05-27
计算鼠标按下移动时鼠标坐标的变化,坐标的X,Y值的变化就是图片要放大或缩小的量。
离线robertkun

只看该作者 4楼 发表于: 2009-05-27
引用第3楼duduqq于2009-05-27 16:49发表的  :
计算鼠标按下移动时鼠标坐标的变化,坐标的X,Y值的变化就是图片要放大或缩小的量。



这个要放大或缩小的量倒是可以求出来,但是不知道用哪个属性将已经插入的图片改变,
麻烦 duduqq 说一下。。谢谢了。。
                                              简单的生活使人快乐!
离线robertkun

只看该作者 5楼 发表于: 2009-05-27
再顶顶。。不要沉。。大家帮帮帮忙啊。。
                                              简单的生活使人快乐!
离线rqzrqh

只看该作者 6楼 发表于: 2009-05-27
void QPixmap::resize ( const QSize & size )
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
Resizes the pixmap to size size.
离线robertkun

只看该作者 7楼 发表于: 2009-05-28
、Re:问一个非常专业的问题。。
引用第6楼rqzrqh于2009-05-27 20:01发表的  :
void QPixmap::resize ( const QSize & size )
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
Resizes the pixmap to size size.



这个函数还真没试过,先谢谢了。。
                                              简单的生活使人快乐!
离线robertkun

只看该作者 8楼 发表于: 2009-05-31
我现在用这个:
    QSize *sizea = new QSize(50,50);
    pixmap->scaled(*sizea,Qt::IgnoreAspectRatio,Qt::FastTransformation);
    qDebug()<<"PictureResize()"<<pixmap->size();
    update();

发现pixmap的大小的确已被设定成为,50,50。可是图片就是没变化,十万火急。。

想当个高手难啊~~有知道的请说一下。。在下感激不尽。。
                                              简单的生活使人快乐!
离线robertkun

只看该作者 9楼 发表于: 2009-05-31
引用第3楼duduqq于2009-05-27 16:49发表的  :
计算鼠标按下移动时鼠标坐标的变化,坐标的X,Y值的变化就是图片要放大或缩小的量。


有没有关于鼠标移动和图片进行缩放的算法,本人对座标不是太熟悉,虽然是根据x,y值变化了,但是达不到那种向里拖动进行缩小,向外拖动进行放大的效果。。

请教高手了。。至急。。万分感谢。。。
                                              简单的生活使人快乐!
离线daizb05
只看该作者 10楼 发表于: 2009-05-31
定义信号和槽,再定义鼠标事件就可以了,多看些小例子就会了
离线jaypei

只看该作者 11楼 发表于: 2009-05-31
*pixmap = pixmap->scaled(*sizea,Qt::IgnoreAspectRatio,Qt::FastTransformation);
离线robertkun

只看该作者 12楼 发表于: 2009-06-01
引用第10楼daizb05于2009-05-31 16:11发表的  :
定义信号和槽,再定义鼠标事件就可以了,多看些小例子就会了


本人愚笨。。看了一些例子,可就是没有用鼠标拖动的。。唉,都折磨我好几天了。。

----------------------------------------------------------------------------------------------------------------------------------------

//这里是 ImageWidget 的类

ImageWidget::ImageWidget(QWidget *parent)  
    :QWidget(parent)
{
    QDesktopWidget desktop;
    pixmap = QPixmap(desktop.width(),desktop.height());   //这是创建QDesktopWidget desktop是什么用意?
    scale = 1;
    angle = 0;
    bFit = true;
}

void ImageWidget::paintEvent(QPaintEvent *event)         //还是不太清楚paintEvent的作用?
{
    QPainter painter(this);
    painter.drawPixmap(0,0,pixmap);
}

----------------------------------------------------------------------------------------------------------------------------------------

//下面是主函数里实现放大缩小的两个方法

void MainWindow::zoomIn()         //这是一个用来放大的函数
{
    imageWidget->scale *= 1.25;  //这里的 imageWidget 是在主函数里创建的实例,这是用来作什么的?

    zoomInAct->setEnabled(imageWidget->scale < 3);
    zoomOutAct->setEnabled(imageWidget->scale > 0.333);
    imageWidget->resize(imageWidget->scale * scrollArea->size());  //再帮忙分析一下这个函数。
}

void MainWindow::zoomOut()     //这是用来缩小的
{
    imageWidget->scale *= 0.8;
    zoomInAct->setEnabled(imageWidget->scale < 3);
    imageWidget->resize(imageWidget->scale * scrollArea->size());
}

----------------------------------------------------------------------------------------------------------------------------------------

上面几个疑点小弟不明白,请大侠们帮忙分析一下。谢谢了。

-
[ 此帖被robertkun在2009-06-01 08:47重新编辑 ]
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个