यह संभव है। यदि आप एक QImage में अपने पीएनजी लोड कर रहे हैं मान लिया जाये कि, आप अपनी छवि से एक मुखौटा बनाने के लिए कुछ इस तरह कर सकते हैं:
QImage img("your.png");
QPixmap mask = QPixmap::fromImage(img.createAlphaMask());
विकल्पों की QImage में create*Mask
कार्यों के लिए अन्य देखें।
तो यह चित्रकार क्लिप क्षेत्र स्थापित करने का एक सरल बात है:
QPainter p(this);
p.setClipRegion(QRegion(mask));
यहाँ एक बेवकूफ डेमो (के रूप में किया जाता है, छवि लोड, मुखौटा और क्षेत्र निर्माण कैश्ड किया जाना चाहिए कि कोड का उपयोग नहीं करते है, वे संभावित महंगे हैं):
#include <QtGui>
class W: public QWidget
{
Q_OBJECT
public:
W(): QWidget(0) { }
protected:
void paintEvent(QPaintEvent *)
{
QPainter p(this);
QImage img("../back.png");
QPixmap mask = QPixmap::fromImage(img.createAlphaMask());
// draw the original image on the right
p.drawImage(300, 0, img);
// draw some ellipses in the middle
p.setBrush(Qt::red);
for (int i=0; i<100; i+=10)
p.drawEllipse(i+150, i, 20, 70);
// and do the same thing, but with the mask active
p.setClipRegion(QRegion(mask));
for (int i=0; i<100; i+=10)
p.drawEllipse(i, i, 20, 70);
}
};
कौन सा कुछ इस तरह का उत्पादन: उपयोगी नमूना कोड के लिए
धन्यवाद एक बहुत और +1 । –