Namespaces
Variants
Actions
Revision as of 04:18, 11 October 2012 by hamishwillee (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Scaling QPixmap image

Jump to: navigation, search
Article Metadata

Tested with
Devices(s): Nokia 5800 XpressMusic

Compatibility
Platform(s): S60 5th Edition

Article
Keywords: QPixmap
Created: tepaa (26 Mar 2009)
Last edited: hamishwillee (11 Oct 2012)

Contents

Overview

This code snippets shows how to scale a QPixmap image.


Preconditions

Header

public:
void updateImage();
void paintEvent(QPaintEvent*);
void resizeEvent (QResizeEvent*);
 
private: //Data
QPixmap* pixmap;
QSize widgetSize;

Source

The application supports screen orientation changes. In resizeEvent(), store the new size of the widget. This way the image can always be scaled to the correct size.

void QMyWidget::resizeEvent (QResizeEvent* event)
{
widgetSize = event->size();
// Call base class impl
QWidget::resizeEvent(event);
}

Load the image from the file system:

void QMyWidget::updateImage()
{
delete pixmap;
pixmap = 0;
// imagePath can be something like "c:/data/Images/myImage.jpg"
pixmap = new QPixmap(imagePath);
update();
}

Scale the new image and draw it on the screen.

void QMyWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
 
if (!pixmap->isNull())
{
QPoint centerPoint(0,0);
// Scale new image which size is widgetSize
QPixmap scaledPixmap = pixmap->scaled(widgetSize, Qt::KeepAspectRatio);
// Calculate image center position into screen
centerPoint.setX((widgetSize.width()-scaledPixmap.width())/2);
centerPoint.setY((widgetSize.height()-scaledPixmap.height())/2);
// Draw image
painter.drawPixmap(centerPoint,scaledPixmap);
}
}

Postconditions

The QPixmap image has been scaled.

Related articles

Scaling QGraphicsPixmapItem

507 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved