2008-11-29 17 views
5

मैं एक कस्टम नियंत्रण बनाने की कोशिश कर रहा हूं जो प्रति-पिक्सेल अल्फाबलेंड के साथ बिटमैप प्रदर्शित करता है (जैसा कि आप में से कुछ पहले से ही अन्य प्रश्नों के लिए जानते हैं)।कस्टम पारदर्शी नियंत्रण बनाना

अभी मैं संसाधन संपादक में कस्टम नियंत्रण का उपयोग कर रहा हूं और मैं इसे सीडब्ल्यूएनडी से प्राप्त कक्षा में संलग्न करता हूं। जब मैं अपनी कस्टम क्लास को पंजीकृत करता हूं तो मैंने नियंत्रण की पारदर्शिता प्राप्त करने के लिए WNDCLASS स्ट्रक्चर के HbrBackground को NULL_BRUSH पर सेट किया है।

नियंत्रण के ऑनपेंट में मैं प्रति-पिक्सेल अल्फा मिश्रण बिटमैप को पेंट करने के लिए अल्फाब्लेंड का उपयोग करता हूं।

यह काफी अच्छी तरह से काम करता है, लेकिन मैं इस दो समस्याएं हैं:

  • मैं दिखाया गया बिटमैप को बदलने के लिए जब माउस नियंत्रण खत्म हो गया है चाहता हूँ। चूंकि नियंत्रण पारदर्शी है, ऐसे क्षेत्र जो एक बिटमैप जो अन्य बिटमैप द्वारा ओवरलैप नहीं किए जाते हैं, मिटा नहीं जाते हैं। जब छवि बदल जाती है तो मैं पृष्ठभूमि को कैसे मिटा सकता हूं?

  • दूसरी समस्या दो ओवरलैपिंग नियंत्रण से संबंधित है। मेरा नियंत्रण अन्य नियंत्रण पर चित्रित किया गया है जिसमें ढाल है (वास्तव में अन्य नियंत्रण के अंदर है)। समस्या यह है कि अगर मैं ज़ेड-ऑर्डर में अपना नियंत्रण डालता हूं तो अन्य नियंत्रण मेरे नियंत्रण को ओवरलैप करते हैं और मेरा प्रदर्शित नहीं होता है। यदि मैं ज़ेड-ऑर्डर में पहले अन्य नियंत्रण डालता हूं तो मुझे अपने नियंत्रण में माउस संदेश नहीं मिल सकता है।

शायद मैं कुछ गलत कर रहा हूं या मैं गलत हूं कि मैं अपने नियंत्रण को लागू करने की कोशिश कैसे कर रहा हूं। किसी भी तरह की मदद की सराहना की जाएगी।

धन्यवाद,

जेवियर

उत्तर

1

मैं एक मौका ले लेंगे। :-)

यह आपको जो कुछ भी आप चाहते हैं उसे पूरा करने के लिए आपको वह सब कुछ देना चाहिए।

General Solution for Transparent Controls

जहाँ तक जेड आदेश मुद्दों के रूप में, ज़ेड-ऑर्डर संदेश प्राथमिकता प्रभावित नहीं करता। आपको कुछ कोड पोस्ट करने की आवश्यकता होगी ताकि हम यह निर्धारित कर सकें कि वहां क्या हो रहा है।

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