2011-08-13 7 views
12

में पारदर्शी पीएनजी छवि (टीआईमेजलिस्ट के साथ) मैं टीआईएमजलिस्ट में पारदर्शी पृष्ठभूमि के साथ एक पीएनजी लोड करना चाहता हूं और इसे टीएमएएनमेनू (टीएक्शन के माध्यम से) में उपयोग करना चाहता हूं।
हालांकि, डेल्फी में पृष्ठभूमि सिर्फ काला है। क्या पीएनजी समर्थन डेल्फी में केवल आधा लागू है?एक टीएमएएनमेनू

This लड़का कहता है कि यह उसके लिए काम करता था लेकिन मुख्य मेनू के बजाय बटन के साथ।

मेरे सेटअप:

  • मेरी छवि है रंग प्रति 8 बिट से अधिक पारदर्शिता चैनल के लिए 8 बिट (मैं भी 1 पारदर्शिता के लिए थोड़ा के साथ की कोशिश की है, लेकिन अभी भी काम नहीं करता है)। छवि किसी भी अन्य कार्यक्रम में ठीक दिखती है।
  • डेल्फी एक्सई।
  • टीआईमेजलिस्ट के संपादक में 'पारदर्शी रंग' और 'भरें रंग' को 'डिफ़ॉल्ट' पर सेट किया गया है और अक्षम हैं।

अनपेक्षित व्यवहार के सावधान:

डेल्फी सभी छवियों (पूरा फ़ॉर्म TIMAGELIST में ही नहीं IN) से वंचित रह जाएंगे उपयोगकर्ता colordepth संपत्ति के मूल्य बदल जाता है जब।

बग मांग पर पुन: उत्पन्न किया जा सकता है। खोई गई छवियों को 'हिस्टॉय' फ़ोल्डर से पिछली डीएफएम फ़ाइल से पुनर्प्राप्त किया जा सकता है।

+1

हाय आरआरज़। मैं एक TImageList का उपयोग करें। इसमें ड्रॉइंग स्टाइल गुण हैं और इसे केवल 'पारदर्शी' पर सेट किया जा सकता है (जो अभी भी काम नहीं कर रहा है)। लेकिन सीडी 32 बिट नहीं है। – Ampere

+2

क्षमा करें मेरा मतलब है कि 'ColorDepth'' को 'cd32Bit' – RRUZ

+0

पर सेट किया जाना चाहिए अद्यतन: एक कलरडिथ संपत्ति है लेकिन अगर मैं इसे 'cd32Bit' पर सेट करता हूं तो छवियों को मेनू में अब चित्रित नहीं किया जाता है। – Ampere

उत्तर

4

यहाँ समाधान है यह (किसी भी अतिरिक्त सूचना के बिना अपने TImageList से सभी छवियों) को नष्ट करेगा तो समाधान के लिए केवल उन केवल कुछ भरी हुई छवियां हैं के लिए है। अपनी छवियों और अपनी डीएफएम फ़ाइल बैकअप भी।

मेरे मामले में, मेरे पास 100 से अधिक रास्ता है इसलिए मेरे लिए सभी छवियों को एक-एक करके निर्यात करना और उन्हें उसी क्रम में वापस लोड करना काफी उत्पादक नहीं है।

तो निष्कर्ष यह है कि डेल्फी एक्सई पारदर्शी पीएनजी फ़ाइलों (टीआईमेजलिस्ट में) के साथ काम करने के लिए तैयार नहीं है। मैं अपने पुराने तीसरे पक्ष पीएनजी लाइब्रेरी में बेहतर वापसी करता हूं या सिर्फ सादे बीएमपी छवियों का उपयोग करता हूं।


अद्यतन:

और यह कैसे डेल्फी 7 के तहत यह करने के लिए है: http://www.ic0de.org/showthread.php?10477-TUT-Working-with-delphi-s-imagelist-and-transparency

+0

डेल्फी एक्सई लगभग आपके लिंक के अनुसार अल्फा चैनल पीएनजी के साथ काम करने के लिए तैयार है (नीचे देखें)। लेकिन आपको पता होना चाहिए कि TImageList संपादक के साथ कैसे काम करना है। जिस तरह से हम उपयोग करते हैं, वह सभी छवियों को निर्देशिका में बैक अप लेना और क्रमांकित करना है, उदा। 000_image1.png, 001_image2.png और इसी तरह। फिर प्रत्येक परिवर्तन पर हम छवि सूची को साफ़ करते हैं और इस निर्देशिका से छवियों के साथ पुनः लोड करते हैं, इसे एक ऐड ... कमांड के साथ किया जा सकता है और छवियों का आदेश दिया जाता है जैसा कि वे पहले थे।हालांकि, एक (आज छोटी) समस्या है: सक्षम रनटाइम थीम के बिना पीएनजी पारदर्शिता डेल्फी एक्सई में काम नहीं करती है। –

6

मैं डेल्फी 7 के बाद TPngComponents का उपयोग कर रहा था। यह अधिकांश डेल्फी बिल्ड-इन/थर्ड पार्टी घटकों के लिए बहुत अच्छा पीएनजी समर्थन प्रदान करता है। Embarcadero ने एक और अच्छी तरह से पता चला था ओपन सोर्स पीएनजी सपोर्टिंग घटक टीपीएनजी इमेज के रूप में जानते हैं और बाद में डेल्फी संस्करणों में डेल्फी के मूल ग्राफिक समर्थन में निर्माण करते हैं। तो जब मैं डेल्फी 2010 में बदल गया, तो मुझे लगता है कि डेल्फी का मूल समर्थन था और मूल समर्थन का परीक्षण किया लेकिन पता चला कि अल्फा समर्थन पर्याप्त नहीं है।

तो मैंने फिर से उस TPngComponents का उपयोग किया था और मुख्य मेनू सहित अधिकांश घटकों के लिए इसका बेहतर समर्थन था। मुझे लगता है कि पैकेज सीमित संशोधन के साथ डीएक्सई के लिए प्रयोग योग्य होना चाहिए।

संपादित करें: उत्पाद कोडगियर (अब एम्बरकाडेरो) को इंगित करने के लिए उवे राबे के लिए धन्यवाद, एक और घटक टीपीएनजी इमेज बल्कि टीपीएनजी कॉम्पोनेंट था। http://www.aha-soft.com/faq/delphi-imagelist-png.htm
सावधान::

+1

ठीक है। धन्यवाद। तो यह एक डेल्फी बग है। मैं अच्छे पुराने बीएमपी प्रारूप में वापस जाऊंगा। लंबे समय तक डेल्फी और 'आधुनिक' जीयूआई इंटरफेस हम इसके साथ बना सकते हैं। – Ampere

+0

PngComponents को CodeGear (अब Embarcadero) द्वारा नहीं खरीदा गया था। वह गुस्तावो दाउद से केवल पीएनजी समर्थन था। PngComponents हमेशा Martijn Saly द्वारा बनाए गए पीएनजी समर्थन के आधार पर एक घटक संकुल रहा है। वर्तमान संस्करण डी 200 9 और उच्चतर के लिए मान्य है। –

+0

@ यूवे रबीबी ओह मैंने चेक किया और हाँ मैंने TPngIomponent के साथ TPngImage को मिश्रित किया। कोडेगियर का विस्तार (अब एम्बरकाडेरो) [निक होजेस ब्लॉग] में मिल सकता है (http://blogs.embarcadero.com/nickhodges/2008/08/13/39100)। कोई फर्क नहीं पड़ता कि डेल्फी देशी समर्थन टीपीएनजी कॉम्पोनेंट से अलग क्यों है जिसका मैं उपयोग कर रहा था। यह इंगित करने के लिए धन्यवाद कि मैं और मैं अपना संदेश संशोधित करूंगा। – Justmade

12

वहाँ बैकअप पूरे DFM फाइल करने के लिए कोई कारण नहीं है।

अपने ImageList पर कुछ करने से पहले आपको अपनी छवियां निर्यात करनी चाहिए: छवि सूची संपादक में "निर्यात करें" बटन पर क्लिक करें और यह सभी छवियों को एक .BMP फ़ाइल में सहेज लेगा।

बदलते गुण के बाद: ColorDepth = cd32Bit, DrawingStyle = dsTransparent

आप क्लिक करना चाहिए "जोड़ें" बटन और फ़ाइल आप पहले निर्यात का चयन करें। फिर, छवियों को मेनू और टूलबार में पारदर्शिता के साथ खींचा जाएगा (कम से कम D2010 पर) ... तीसरे पक्ष के घटकों का उपयोग करने की आवश्यकता नहीं है।

+1

यदि आपका 'निर्यात' बटन एक ही समय में सभी छवियों को निर्यात करता है, तो आप एक छवि को कैसे निर्यात करते हैं? (मेरे मामले में, 'निर्यात' बटन केवल एक छवि निर्यात करता है। – Ampere

+1

यह बटन 2 चीजें कर सकता है। 1) यदि आपके पास "छवियों" सूची में कुछ भी नहीं चुना गया है, तो यह इमेजलिस्ट में सभी छवियों को निर्यात करेगा। 2) यदि एक या अधिक आइकन चुने गए हैं, तो यह केवल चयनित छवियों को निर्यात करेगा। – djsoft

+0

"छवियों" सूची में आप "कुछ भी नहीं चुनें" कैसे करते हैं? जब मैं 'TImageList' घटक को डबल-क्लिक करता हूं तो पहली छवि हमेशा प्रारंभ में चुनी जाती है, और ** निर्यात ** बटन पर क्लिक करने से केवल उस छवि को निर्यात करने पर जोर दिया जाएगा। आप एक संपूर्ण कल्पनावादी कैसे निर्यात करते हैं? –