Python で QPixmap を使用する方法

WBOY
WBOY転載
2023-04-19 16:58:131691ブラウズ

QPixmap は主に描画に使用され、画像表示に最適化されています。QImage は主に画像 I/O、画像アクセス、ピクセル変更のために設計されています。ただし、QPixmap を使用して大きな画像をロードすると、大量のメモリを消費するため、小さな画像のロードに適しています。数十 K の画像は、ロード後に何度も拡大されます。

画像が大きすぎる場合は、QImage を使用して画像をロードし、ユーザー描画用に QPixmap に変換することができます。QPixmap の描画効果は最高です。

1. QPixmap を使用して画像を表示する

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.drawPixmap(0,0,50,50,pix); //在(0,0)点起始的宽高均为50的句型中显示图片
 
    painter.translate(50,50); //将起始点改为(50,50)
    painter.drawPixmap(0,0,50,50,pix); //在(50,50)起始的宽高为50的矩形中显示图片
}

2. QPixmap を使用して画像のスケーリングを実現する

QPixmap クラスのscaled() 関数を使用して拡大または縮小できます。画像。この関数は、指定されたモードに基づいて、指定された幅と高さになるように拡大縮小された四角形のサイズを返します。

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.drawPixmap(0,0,50,50,pix); //在(0,0)点起始的宽高均为50的句型中显示图片
    
    qreal wid = pix.width(); //获取图像的宽高
    qreal hei = pix.height();
    pix = pix.scaled(wid*2,hei*2,Qt::KeepAspectRatio);//将图片宽高扩大两倍,且在矩形内保持宽高比值
    painter.drawPixmap(50,50,pix);
}

3. QPixmap を使用して画像の回転を実現します

QPainter クラスのrotate() 関数を使用して画像の回転を実現できますデフォルトでは原点を中心にして回転します。

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.translate(50,50); //将旋转中心改为(50,50)
    painter.rotate(90); //顺时针旋转90度
    painter.translate(-50,-50); 
    painter.drawPixmap(0,0,50,50,pix); 
}

目的の効果を得るには、最初に回転の中心を変更し、次に再度回転してから原点に戻す必要があります。

4. QPixmap を使用して画像の歪みを実現する

QPainter クラスの shear(qreal sh, qreal sv) 関数を使用して画像の歪みを実現します。パラメータ 1 は水平方向の変形を実現し、パラメータ 2 は縦方向の変形を実現します。値が 0 の場合、歪みがないことを意味します。

画像形状の変化は、座標系の変化によって実現されます。

rree

以上がPython で QPixmap を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。