QPixmap digunakan terutamanya untuk lukisan dan dioptimumkan untuk paparan imej QImage terutamanya direka untuk I/O imej, akses imej dan pengubahsuaian piksel. Walau bagaimanapun, jika anda menggunakan QPixmap untuk memuatkan gambar besar, ia akan mengambil banyak memori dan sesuai untuk memuatkan gambar kecil; gambar berpuluh-puluh K akan dibesarkan berkali-kali selepas dimuatkan.
Jika imej terlalu besar, anda boleh menggunakan QImage untuk memuatkannya, dan kemudian menukarnya kepada QPixmap untuk lukisan pengguna QPixmap adalah yang terbaik.
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的矩形中显示图片 }
Anda boleh menggunakan fungsi berskala() dalam kelas QPixmap untuk membesarkan. atau besarkan imej Zum keluar. Fungsi ini mengembalikan saiz segi empat tepat berskala untuk mempunyai lebar dan ketinggian yang diberikan, berdasarkan mod yang ditentukan.
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); }
Anda boleh menggunakan fungsi rotate() kelas QPainter untuk memutar imej secara lalai pusat.
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); }
Anda mesti menukar pusat putaran dahulu, kemudian putar semula, dan kemudian pulihkan asal untuk mencapai kesan yang diingini.
Gunakan fungsi ricih(qreal sh, qreal sv) kelas QPainter untuk merealisasikan herotan imej. Parameter 1 merealisasikan ubah bentuk mendatar, dan parameter 2 merealisasikan ubah bentuk membujur. Apabila nilainya ialah 0, ini bermakna tiada herotan.
Perubahan dalam bentuk imej dicapai dengan menggunakan perubahan dalam sistem koordinat.
void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QPixmap pix; pix.load(“D:/1.jpg”); painter.drawPixmap(0,0,50,50,pix); painter.shear(0.5,0) ;//横向扭曲 painter.drawPixmap(50,0,50,50,pix); painter.shear(0,0.5);//纵向扭曲 painter.drawPixmap(0,50,50,50,pix); painter.shear(0.5,0.5);//同时横纵扭曲 painter.drawPixmap(50,50,50,50,pix); }
Atas ialah kandungan terperinci Bagaimana untuk menggunakan QPixmap dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!