delphi - Bitmap with transparency -


कोड के साथ

  प्रक्रिया TForm2.Button1Click (प्रेषक: टूबैक्ट); Var ओमेटा: TMetaFile; ओबीएमपी: टीबीआईटैप; शुरू Image1.Transparent: = सच; Image1.Picture.LoadFromFile ( 'डी: \ डेटा \ WMF.wmf'); OBmp: = टीबीटमैप। बनाएं; ओमेटा की कोशिश करें: = TMetaFile (Image1.Picture.Graphic); ओबीएमपीसेटसेट (ओमेटा विड्थ, ओमेटा। हाइट); OBmp.Canvas.Draw (0, 0, ओमेटा); oBmp.SaveToFile ( 'डी: \ डेटा \ WMF.bmp'); अंत में oBmp.Free; समाप्त; समाप्त;  

मैं wmf छवि दिखाता हूँ और bmp फ़ाइल बनाउंगा। बीएमपी छवि बनाई गई मैं कोड के साथ दिखा रहा हूँ

  प्रक्रिया TForm2.Button2lick (प्रेषक: टूबैक्ट); शुरू Image1.Transparent: = सच; Image1.Picture.LoadFromFile ( 'डी: \ डेटा \ WMF.bmp'); समाप्त;  

लेकिन छवि पारदर्शिता के बिना दिखाया गया है वैसे? मैं इस बीएमपी छवि को पारदर्शिता के साथ कैसे दिखा सकता हूं?

टीआईए और सबसे अच्छा संबंध branko

सबसे पहले, आपको पता होना चाहिए कि पारदर्शी बीएमपी बहुत असामान्य हैं इसलिए, कई (अधिकांश) बिटमैप दर्शक, एन्कोडर, और डिकोडर्स पारदर्शी बिटमैप का समर्थन नहीं करते हैं। हालांकि, कुछ उम्मीद है। सबसे पहले, कई बिटमैप्स 32-बिट हैं, हालांकि पिक्सेल अक्सर $ 00 बीबीजीआरआरए प्रारूप में संग्रहीत किए जाते हैं। प्रत्येक "पिक्सेल" का पहला बाइट इसलिए अप्रयुक्त है, और एक निश्चित रूप से इसे अस्पष्टता मूल्य के रूप में उपयोग कर सकता है: $ AABBGGRR लेकिन यह न केवल मेरे व्यक्तिगत विचार हैं अधिकांश बिटमैप का उपयोग करते हैं, लेकिन (और संस्करण 5) वास्तव में पारदर्शिता डेटा का समर्थन करता है आप लाल, हरे, नीले, और अल्फा मास्क (जैसे $ 000000FF, $ 0000FF00, $ 00FF0000, और $ FF000000 क्रमशः) को निर्दिष्ट करते हैं और फिर आप प्रति पिक्सेल लाल, हरे, नीले, और अल्फा तीव्रता को संग्रहीत कर सकते हैं।

फिर भी, जैसा मैंने कहा था, सबसे बिटमैप दर्शकों, एन्कोडर्स, और डिकोडर्स पारदर्शी बिटमैप का समर्थन नहीं करते हैं। मुझे लगता है कि वीसीएल एनकोडर्स, डिकोडर्स और व्यूअर ( TImage ) नहीं करते हैं।

मैं बीएमपी के बजाय पीएनजी का उपयोग करने पर विचार करेगा। पीएनजी बिटमैप इमेज प्रारूप कई अलग-अलग तरीकों से पारदर्शिता का समर्थन करता है।


Comments