2012-06-18 13 views
7

मैं एक हाइलाइट के रूप में कार्य करने के लिए एक छवि के शीर्ष पर एक अर्द्ध पारदर्शी आयत खींचने की कोशिश कर रहा हूं। दुर्भाग्यवश, मैं जो कुछ भी कोशिश करता हूं वह पारदर्शी प्रभाव को करने में सक्षम नहीं लगता है। इसके बजाय मैं बिना पारदर्शिता के ठोस ठोस आयत प्राप्त करता हूं। मैं QBrush एक अल्फा देने की वजह से उम्मीदमैं क्यूटी में अर्ध-पारदर्शी आयताकार कैसे आकर्षित करूं?

void PageView::paintEvent(QPaintEvent *event) 
{ 
    QPainter painter(this); 
    QImage img=...; 

    painter.drawImage(0, 0, img); 
    ... 
    // draw a light blue, transparent rectangle to highlight 
    QRect rect=...; 
    painter.fillRect(rect, QColor(128, 128, 255, 128)); 
    ... 
} 

दुर्भाग्य से, मेरे लिए, यह एक ठोस नीले आयत ड्रॉ बजाय अर्द्ध पारदर्शी एक की:

यहाँ अभी मैं क्या कर रहा हूँ मूल्य।

मैंने या QPixMap पर ड्राइंग करने का भी प्रयास किया है, painter.setCompositionMode(...) के साथ खेल रहा है। अब तक कोई भाग्य नहीं है।

इस प्रकार मेरा प्रश्न: मैं अपने PageView पर सेमी-पारदर्शी आयताकार बनाने के लिए क्यूटी को कैसे समझा सकता हूं?

संपादित करें: यदि यह प्रासंगिक है, तो मैं इसे विंडोज़ पर क्यूटी 4.8.1 के तहत बना रहा हूं।

+0

[क्यूटी दस्तावेज़] (http://doc-snapshot.qt-project.org/4.8/qbrush.html) में कोई क्यूब्रश (आर, जी, बी, ए) 'कन्स्ट्रक्टर नहीं है। क्या आपका मतलब 'क्यूकोलर' था? –

+0

मैंने किया, हाँ। मेरी गलती। – Managu

+0

पूर्ण 'पृष्ठ दृश्य :: paintEvent' http://pastebin.com/Dj9dDd0c पर। हालांकि मुझे नहीं लगता कि मैंने जो कुछ छोड़ा है उसमें कुछ भी दिलचस्प है। – Managu

उत्तर

13

कोड एक मामूली संशोधन के साथ मेरे लिए काम करता है के रूप में आप के रूप में यह संकलन नहीं है कि यह:

painter.fillRect(rect, QBrush(QColor(128, 128, 255, 128))); 

नोट:

ओपी के कारण एक पाश में अर्द्ध पारदर्शी आयत चित्रकला गया था एक ही क्षेत्र को कई बार चित्रित किया जाना चाहिए। इसके परिणामस्वरूप एक योजक प्रभाव होगा जो अंततः उस क्षेत्र को ठोस भरने के समान दिखने का कारण बन जाएगा।

+0

राइटियो, टाइपो मेरे प्रश्न सबमिशन में। लेकिन यह मेरे लिए ठोस आयतों का उत्पादन करता है, अर्द्ध पारदर्शी नहीं। – Managu

+0

क्या आपने 'fillRect()' को कॉल करने का प्रयास किया है क्योंकि मेरे पास यहां 'क्यूब्रश' है? –

+0

http://pastebin.com/Dj9dDd0c – Managu

संबंधित मुद्दे