2012-04-22 15 views
7

अद्यतन: मैं कुछ दिनों के लिए पारदर्शिता सामान के साथ खिलवाड़ से छुट्टी ले ली। मैंने आज रात फिर से इसके साथ गड़बड़ करना शुरू कर दिया। new result http://img3.imageshack.us/img3/4265/icontransp.jpg http://img3.imageshack.us/img3/4265/icontransp.jpgनियंत्रण को ध्यान में रखते हुए मैं सी # फॉर्म में पारदर्शिता कैसे जोड़ सकता हूं?

Passant के समाधान पारदर्शी पृष्ठभूमि ढाल के मुद्दे को हल करता है: मैं एक नया परिणाम हंस Passant के समाधान का उपयोग मिल गया। हालांकि, मैं अभी भी फॉर्म के बैककोलर के साथ मिश्रित मेरे आइकन में पारदर्शी रंगों के साथ समस्या में भाग रहा हूं। आप उपरोक्त छवि में आइकन के विभिन्न हिस्सों के आसपास फूशिया देख सकते हैं।

मूल सामग्री:

मैं अब कई घंटों तक इस पर चल रहा है, और मैं बहुत किस्मत नहीं किया है। मैंने नियंत्रण के साथ गड़बड़ कर ली है। क्षेत्र, फॉर्म। ट्रांसपेरेंसीकी, फॉर्म। अस्पष्टता, और कुछ अन्य यादृच्छिक चीजों के साथ कुछ अन्य यादृच्छिक चीजें।

हाल ही में मैं अपने डेस्कटॉप को अनुकूलित करने की कोशिश कर रहे हैं और आवेदन डॉक्स के साथ गड़बड़ करने का फैसला किया। मैक डॉक और कुछ तीसरे पक्ष के विंडोज कार्यान्वयन की पेशकश करने के बाद, मैंने फैसला किया कि मैं अपना खुद का निर्माण करना चाहता हूं।

अंततः मैं Win32 एपीआई का उपयोग करने के लिए पर ले जाना चाहते हैं। अभी के लिए मैं जितना संभव हो उतना सी # और नेट फ्रेमवर्क क्षमताओं का उपयोग कर कुछ काम करना चाहता हूं।

  • प्रदर्शन एक रूप/एक ढाल पृष्ठभूमि के साथ मेनू:

    कुछ चीजें मैं इस आवेदन में ऐसा करने में सक्षम होना चाहता हूँ कर रहे हैं।

  • प्रपत्र/मेनू पारदर्शिता के लिए माउस अपारदर्शी रखते हुए की अनुमति दें।
  • प्रदर्शन प्रतीक है कि पारदर्शी पृष्ठभूमि होते हैं।
  • मेनू और प्रतीक माउस संबंधी गतिविधियां प्राप्त करने में सक्षम (,,, dragover, DragDrop मंडराना छोड़ क्लिक करें और कुछ अन्य लोगों,) होना चाहिए। Desired Effect http://img207.imageshack.us/img207/5716/desired.jpg http://img207.imageshack.us/img207/5716/desired.jpg

    इस छवि को मैं प्राप्त करने के लिए कोशिश कर रहा हूँ दृश्य प्रभाव दिखाता है:

इस आशय मैं शूटिंग कर रहा हूँ है। यह एक त्वचा थी जिसे मैंने रेनमीटर नामक कार्यक्रम के लिए बनाया था। छवि त्वचा के पीछे नोटपैड ++ दिखाती है जिसमें कुछ त्वचा की फाइलें संपादक में खुली हैं। मेनू पारदर्शी है, लेकिन आइकन अपारदर्शी रहते हैं।

मेरे दृष्टिकोण:

कार्य करने के लिए के रूप में मेनू मेरे लिए एक तार्किक पहली पसंद तरह लग रहा था एक फार्म का उपयोग करना। मुझे घटनाओं की बुनियादी समझ है। मुझे पूरा यकीन नहीं है कि अपनी खुद की क्लिक घटनाओं को कैसे बनाया जाए, इसलिए एक फॉर्म घटनाओं के साथ काम करना आसान बना देगा। मैंने आइकन के लिए कुछ विकल्प माना। मैंने फैसला किया कि मैं आइकन के लिए पिक्चरबॉक्स का उपयोग करूंगा, क्योंकि वे छवियों को पकड़ सकते हैं और ईवेंट प्राप्त कर सकते हैं।

एक बार मैं अपने मेनू के सभी संरचनात्मक तर्क के लिए कोड समाप्त हो गया है, मैं दृश्य प्रभाव मैं चाहता था प्राप्त करने की कोशिश करने के लिए इसे के साथ प्रयोग करना शुरू कर दिया। प्रपत्र। अस्पष्टता ने फॉर्म पर सबकुछ की पारदर्शिता को प्रभावित किया। चूंकि मैं चाहता हूं कि आइकन पूरी तरह से अपारदर्शी हों, मैंने अकेले इस संपत्ति को छोड़ दिया। मैंने बैककोलर को रंग में सेट करने का प्रयास किया।पारदर्शी, लेकिन यह एक त्रुटि देता है। मैं कुछ संयोजनों के साथ चारों ओर खेला ... Combination Effects http://img204.imageshack.us/img204/757/effectsi.jpg http://img204.imageshack.us/img204/757/effectsi.jpg

मैं एक बिटमैप में एक Drawing2D.LinearGradientBrush साथ ढाल आकर्षित किया। इस बिटमैप को फॉर्म के रूप में रखा गया था। बैकग्राउंड इमेज या पिक्चरबॉक्स के रूप में। इमेज। यदि उपयोग किया जाता है, तो पिक्चरबॉक्स का आकार पूरे फॉर्म को कवर करने के लिए किया गया था और पीछे भेजा गया था।

मैंने देखा कि कुछ फॉर्म। बैकग्राउंड रंग मेरे आइकन की रूपरेखाओं के साथ मिश्रित किया जाएगा। आइकनों के पास एक चिकनी उपस्थिति के किनारों के साथ पारदर्शिता है। चूंकि आइकन फॉर्म के पृष्ठभूमि रंग को उठा रहे हैं, इससे मुझे लगता है कि जब चित्र रूप में आइकन लोड होते हैं तो पिक्चरबॉक्स नई छवियां बना रहे हैं। छवि के अर्ध-पारदर्शी भाग को फॉर्म के पृष्ठभूमि रंग के साथ विलय कर दिया जाता है जब उन्हें फ़ॉर्म के पीछे जो भी रंग मिलते हैं, उन्हें विलय करना चाहिए।

effect with white desktop http://img838.imageshack.us/img838/8299/whitedesktop.jpg http://img838.imageshack.us/img838/8299/whitedesktop.jpg

इस छवि में आप फ्यूशिया माउस में मौजूदा भले ही फार्म के फ्यूशिया रंग अब पूरी तरह से पारदर्शी है देख सकते हैं। मैं यह इंगित करना भूल गया कि 150 के अल्फा मूल्य के साथ एक ही हरे से पीले ढाल का उपयोग हर मामले में किया जाता था। उन छवियों में जहां ढाल हरा नहीं दिखता है, ऐसा इसलिए है क्योंकि पारदर्शी रंग फूशिया पृष्ठभूमि के साथ मिश्रण कर रहे हैं।

मुझे सच में यकीन नहीं है कि यहां से क्या करना है। मुझे लगता है कि मैं जो चाहता हूं उसे प्राप्त कर सकता हूं अगर मैं किसी भी तरह फॉर्म को पूरी तरह से पारदर्शी बना सकता हूं। मैं यह भी सोच रहा था कि पिक्चरबॉक्स का उपयोग करने के बजाय आइकन को चित्रित करने में मुझे बेहतर भाग्य हो सकता है। समस्या तब माउस घटनाओं को प्राप्त करने के लिए आइकन स्थापित करेगा। (मैंने कभी भी अपनी खुद की घटनाएं नहीं की हैं, और मुझे लगता है कि इसमें कुछ Win32 API कॉल शामिल होंगे।)

क्या पिक्चरबॉक्स के साथ मैं कुछ और प्रभाव प्राप्त कर सकता हूं? जो भी मामला है, मैं समग्र प्रभाव के लिए किसी भी विचार या सुझाव के लिए खुला हूं जिसे मैं प्राप्त करने की कोशिश कर रहा हूं।

उत्तर

0

ठीक है, मुझे उस सब कुछ में थोड़ा सा खो गया है, लेकिन मूल पैराग्राफ में विवरण से, मैं सुनिश्चित करता हूं कि पृष्ठभूमि आयताकार चित्र बॉक्स के दृश्य अभिभावक नहीं है। पैनल.इंडेक्स का उपयोग कर सामने वाले पिक्चरबॉक्स के साथ उन्हें भाई बहनों को ओवरलैप करना।

फिर आप आइकनों को प्रभावित किए बिना आयताकार की अस्पष्टता को बदल सकते हैं। यह भी सुनिश्चित करें कि आइकन स्रोत छवि फ़ाइलों में एक पारदर्शी पृष्ठभूमि है।

मुझे लगता है कि काम करना चाहिए।

+0

नोट मेरा उत्तर WPF में काम करना चाहिए। सुनिश्चित नहीं है कि Winforms में चीजें अलग हैं या नहीं। –

+0

आह, मैं बस इतना कहने वाला था कि मैंने आपकी टिप्पणी में जो वर्णन किया है, उससे पहले ही मैंने बहुत कुछ संभाला है। मेरी समस्या यह है कि मुझे फॉर्म के माध्यम से सभी तरह से पारदर्शिता नहीं मिल सकती है। मैं जिस तरह से चाहता हूं उससे व्यवहार करने के लिए फॉर्म के शीर्ष पर विभिन्न तत्व प्राप्त कर सकता हूं। हालांकि, फॉर्म की पृष्ठभूमि मुझे पूरे एप्लिकेशन को पारदर्शिता देने के लिए मुद्दों दे रही है। – Cheese

+0

(मैं पठनीयता के लिए एक नया पैरा शुरू करने के लिए दर्ज मारा, लेकिन यह टिप्पणी समाप्त हो गया। मैं सिर्फ यह नया शुरू कर देंगे।) मैं अभी तक WPF में कुछ भी प्रयास नहीं किया है। मैं कुछ ग्राफिक्स सामान से निपटने के दौरान पिछले वर्षों की तुलना में अधिक बार उपयोग किया जा रहा है। मुझे लगता है कि इसका एक्सएमएल (xaml?) भाग चीजों को थोड़ा आसान बनाना है। एक बार जब मैं अपने प्रोजेक्ट के इस संस्करण को प्राप्त कर लेता हूं तो मैं इसे आज़मा सकता हूं। – Cheese

11

यह Winforms में करना बहुत आसान है। आपको क्या चाहिए दो रूपों का एक सैंडविच है। नीचे वाले को पारदर्शी ढाल पृष्ठभूमि प्रदान करनी चाहिए, शीर्ष पर माउस को आकर्षित करना चाहिए और माउस क्लिक को संभालना चाहिए। कुछ नमूना कोड:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     this.TopMost = true; 
     this.FormBorderStyle = FormBorderStyle.None; 
     this.TransparencyKey = this.BackColor = Color.Fuchsia; 
     this.Opacity = 0.3; 
     var overlay = new Form(); 
     overlay.FormBorderStyle = FormBorderStyle.None; 
     overlay.TransparencyKey = overlay.BackColor = Color.Fuchsia; 
     overlay.StartPosition = FormStartPosition.Manual; 
     overlay.Location = this.Location; 
     overlay.MouseDown += HandleIconClick; 
     this.Resize += delegate { overlay.Size = this.Size; }; 
     this.LocationChanged += delegate { overlay.Location = this.Location; }; 
     overlay.Paint += PaintIcons; 
     this.Paint += PaintBackground; 
     this.Load += delegate { overlay.Show(this); }; 
    } 
    private void PaintBackground(object sender, PaintEventArgs e) { 
     var rc = new Rectangle(0, 0, this.ClientSize.Width, this.ClientSize.Height); 
     using (var br = new LinearGradientBrush(rc, Color.Gainsboro, Color.Yellow, 0f)) { 
      e.Graphics.FillRectangle(br, rc); 
     } 
    } 
    private void PaintIcons(object sender, PaintEventArgs e) { 
     e.Graphics.DrawIcon(Properties.Resources.ExampleIcon1, 50, 30); 
     // etc... 
    } 
    void HandleIconClick(object sender, MouseEventArgs e) { 
     // TODO 
    } 
} 

कौन सा कुछ हद तक यादृच्छिक रंग और आइकन के साथ इस तरह दिखता है मेरे द्वारा चुने गए:

enter image description here

+0

मैं आपके जैसा एक पेंट इवेंट लिखता हूं, लेकिन यह काम नहीं करता है। तो मैंने आपके कार्यक्रम की कोशिश की और यह भी काम नहीं करता है। यह एक बहुत अजीब व्यवहार है। –

+0

यह फॉर्मबोडर स्टाइल सेट किए बिना परिणाम है। [स्नैपशॉट] (http://i41.tinypic.com/2lwb21k.jpg) –

+0

खैर, सैंडविच के नीचे प्रपत्र दिख रहा है। आपने ढाल पृष्ठभूमि को आकर्षित करने के लिए पेंट को लागू नहीं किया है और शीर्ष रूप का कोई संकेत नहीं है, संभवतः क्योंकि यह पेंट को लागू नहीं करता है। अगर आपको मदद की ज़रूरत है तो कृपया अपना खुद का प्रश्न शुरू करें। –

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

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