2012-01-17 14 views
5

मैं क्यूएमएल का उपयोग करके धुंध प्रभाव प्राप्त करना चाहता हूं। मुझे "प्रभाव: धुंध" (Example) के बारे में संदर्भ मिले लेकिन क्यूटी 4.8 में यह काम नहीं करता है। जहां तक ​​मुझे पता है कि यह सी ++ कोड के साथ लागू किया गया है। पर कैसे?क्यूएमएल और धुंधली छवि

उत्तर

13

effect विशेषता, जिसमें सभी दृश्य QML आइटम हैं, QGraphicsEffect के उप-वर्गों के सभी प्रभाव स्वीकार करते हैं। QGraphicsBlurEffect, QGraphicsColorizeEffect, QGraphicsDropShadowEffect, और QGraphicsOpacityEffect के साथ क्यूटी 4.8 जहाजों। मूल रूप से ये सभी डिफ़ॉल्ट रूप से क्यूएमएल में उपलब्ध थे, लेकिन एक समय में विकास (QtQuick की पहली सार्वजनिक रिलीज से पहले) उन्हें प्रदर्शन कारणों से बाहर रखा गया था। इन कक्षाओं QML के लिए उपलब्ध है ताकि एक उनकी तरह उपयोग कर सकते हैं

qmlRegisterType<QGraphicsBlurEffect>("Effects",1,0,"Blur"); 
qmlRegisterType<QGraphicsColorizeEffect>("Effects",1,0,"Colorize"); 
qmlRegisterType<QGraphicsDropShadowEffect>("Effects",1,0,"DropShadow"); 
qmlRegisterType<QGraphicsOpacityEffect>("Effects",1,0,"OpacityEffect"); 

यह सुनिश्चित करें: उन्हें फिर से काम करने के लिए, एक निम्न main समारोह में अपने आवेदन की सी ++ भाग में कोड की लाइनों, उदाहरण के लिए शामिल करने के लिए है :

import QtQuick 1.1 
import Effects 1.0 

Item { 
    // [...] 
    effect: Blur { 
     blurRadius: 10.0 
    } 
} 

यह काम करता है, लेकिन कई मामलों में परिणामस्वरूप प्रदर्शन वास्तव में अस्वीकार्य है। फिर आपको ShaderEffectItem की मदद से धुंधला करने की कोशिश करनी चाहिए। इस तरह से कोई जीएलएसएल शेडर कार्यक्रमों के साथ ग्राफिक प्रभावों का एहसास कर सकता है जिसके परिणामस्वरूप जीपीयू प्रतिपादन होता है जो पुराने QGraphicsEffect-आधारित दृष्टिकोण से तेज़ होता है।

1

मुझे नहीं पता कि आप किस बारे में बात कर रहे हैं, लेकिन: Shader Effects नामक एक उदाहरण के साथ क्यूटी जहाजों। जैसा कि नाम का तात्पर्य है, यह कूल प्रभाव के सभी प्रकारों को प्राप्त करने के लिए क्यूएमएल के अंदर घोषित जीपीयू शेडर्स का उपयोग करता है।