2012-07-10 11 views
14

दो ओवरलैपिंग PictureBox controls होने के बाद, मैं चित्र बॉक्स के पारदर्शी क्षेत्रों को नीचे नियंत्रण (जेड-ऑर्डर में) दिखाई देने देता हूं।पारदर्शी छवियों के साथ दो ओवरलैपिंग पिक्चरबॉक्स नियंत्रण संभव है?

trying what Microsoft suggests के बाद भी, मुझे वांछित परिणाम नहीं मिल सकते हैं।

यह मैं वर्तमान में क्या है:

enter image description here

और यह जो मैं चाहता है:

enter image description here

तो मेरे सवाल है:

के लिए कोई भी रास्ता दो वांछित परिणाम दो PictureBox के साथ प्राप्त करें नियंत्रण (या किसी अन्य तरीके से) जो एक-दूसरे को ओवरलैप करते हैं और पारदर्शी क्षेत्रों को चमकते हैं?

अद्यतन:

वास्तव में मैं यह तो सवाल "Transparent images with C# WinForms" करने के लिए this answer का उपयोग करके हल किया।

+0

छवियों के ext क्या है का प्रयास करें? – sikas

+0

@sikas ढाल अल्फा चैनल के साथ एक पीएनजी फ़ाइल है। यह क्यों महत्वपूर्ण होना चाहिए? –

+1

WinForms डिफ़ॉल्ट रूप से इसका समर्थन नहीं करता है। इसे काम करने के लिए आपको कुछ बहुत ही रोचक ड्राइंग हैक्स करना होगा। हालांकि, डब्ल्यूपीएफ बिना किसी झुकाव के करता है। –

उत्तर

2

जहां तक ​​मुझे पता है, नियंत्रण की पारदर्शिता अपने मूल नियंत्रण पर निर्भर करती है (जैसा कि आपने दिया गया लिंक में उल्लेख किया है), जिसका अर्थ है कि जिस प्रभाव को आप ढूंढ रहे हैं, उसके लिए आपको एक होना चाहिए एक अन्य तस्वीर बॉक्स में घिरा हुआ चित्र बॉक्स जो असंभव है कि एक तस्वीर बॉक्स एक कंटेनर नहीं है।

हालांकि, आप मूल छवि के लिए एक चित्र बॉक्स के बजाय कस्टम कंटेनर नियंत्रण का उपयोग कर सकते हैं। सबसे बुनियादी नियंत्रण एक पैनल होगा। बस नियंत्रण की पृष्ठभूमि छवि सेट करें और इसमें दूसरा चित्र बॉक्स डालें।

एक और समाधान, एक एकल चित्र बॉक्स का उपयोग करना होगा और मैन्युअल रूप से प्रतिपादन का प्रबंधन करना होगा।

यह अब तक का सबसे अच्छा समाधान है क्योंकि दूसरी विधि की छद्म-अनुरूपित पारदर्शिता शांत अक्षम है।

16

इस

private void Form1_Load(object sender, EventArgs e) 
{ 
    // Transparent background... 
    pictureBoxOverlay.BackColor = Color.Transparent; 

    // Change parent for overlay PictureBox... 
    pictureBoxOverlay.Parent = pictureBoxMain; 

// Change overlay PictureBox position in new parent... 
// pictureBoxOverlay.Location = new Point(0, 0); 
} 

परिणाम

enter image description here

llink

+0

धन्यवाद, यह तब तक काम करता है जब तक ओवरले पिक्चर बॉक्स को चित्र बॉक्स द्वारा क्लिप नहीं किया जाता है। मुझे केवल आंशिक रूप से ओवरलैप करने की आवश्यकता है। –

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