(Scalable) graphics
QSkinny offers support for scalable graphics, i.e. rendering SVGs that adapt to a specific size. This means that when a graphic is embedded in a layout, it can change its size when the layout is growing or shrinking, while still maintaining a correct aspect ratio.
Imagine the following code, which produces the image depicted below:
auto horizontalBox = new QskLinearBox( Qt::Horizontal );
horizontalBox->setPreferredSize( { 200, 75 } );
QImage image1( ":/images/cloud.svg" );
QskGraphic graphic1 = QskGraphic::fromImage( image1 );
auto* label1 = new QskGraphicLabel( graphic1, horizontalBox );
label1->setSizePolicy( QskSizePolicy::ConstrainedPreferred, QskSizePolicy::Expanding );
QImage image2( ":/images/train.svg" );
QskGraphic graphic2 = QskGraphic::fromImage( image2 );
auto* label2 = new QskGraphicLabel( graphic2, horizontalBox );
label2->setSizePolicy( QskSizePolicy::ConstrainedPreferred, QskSizePolicy::Expanding );
...
When resizing the window, the graphics will scale according to the size available in the layout:
Since we set the horizontal size policy of the graphics to
ConstrainedPreferred
, the scaling is done through QskGraphic’s
widthForHeight()
methods to maintain the correct aspect ratio. If we
had set the vertical policy to ConstrainedPreferred
and the horizontal
one to e.g. Expanding
, the layout would have queried the
heightForWidth()
method instead.
Of course non-scalable graphics like PNGs and JPGs are also supported:
QImage image( "background.jpg" );
QskGraphic graphic = QskGraphic::fromImage( image );
...