2008-10-02 19 views
6

रंग होने के लिए एक छवि के हर पिक्सेल, उदाहरण के लिए काला बनाना, के लिए पारदर्शी (जो है, सेट अल्फा इस पिक्सेल के लिए 0)।मैं प्रकार System.Drawing.Image का एक उद्देश्य है और हर पिक्सेल जो कुछ विशिष्ट रंग है बनाना चाहते एक विशिष्ट पारदर्शी

ऐसा करने का सबसे अच्छा तरीका क्या है?

+0

मैं एक बहुत ही इसी तरह के सवाल है और अगर तुम मुझे मदद कर सकता है मैं सोच रहा था: http://stackoverflow.com/questions/1096165/transparent-winform-using-selective- रंग –

उत्तर

6

ड्राइंग के दौरान रीमेप करने के लिए रंगों की एक सूची सेट करने के लिए ImageAttributes कक्षा का उपयोग करने के लिए एक अच्छा तरीका है। इसका लाभ अच्छा प्रदर्शन है और साथ ही आपको रीमेपिंग रंगों को बहुत आसानी से बदलने की इजाजत देता है। इस कोड की तरह कुछ का प्रयास करें ...

ImageAttributes attribs = new ImageAttributes(); 
List<ColorMap> colorMaps = new List<ColorMap>(); 
// 
// Remap black top be transparent 
ColorMap remap = new ColorMap(); 
remap.OldColor = Color.Black; 
remap.NewColor = Color.Transparent; 
colorMaps.Add(remap); 
// 
// ...add additional remapping entries here... 
// 
attribs.SetRemapTable(colorMaps.ToArray(), ColorAdjustType.Bitmap); 
context.Graphics.DrawImage(image, imageRect, 0, 0, 
          imageRect.Width, imageRect.Height, 
          GraphicsUnit.Pixel, attribs); 
2

आप केवल जानते हैं कि यह एक छवि है? यदि यह बिटमैप है, तो आप लॉकबिट्स को कॉल कर सकते हैं, प्रत्येक पिक्सेल को चेक/फिक्स कर सकते हैं और फिर बिट्स को फिर से अनलॉक कर सकते हैं।

3

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

+0

MakeTransparent काम करेगा, लेकिन संभवतः आप एक ऐसा फ़ंक्शन लिखना चाहते हैं जो एक ही चीज़ करता है लेकिन सहिष्णुता के साथ काम करता है। यह कंपोजिटिंग में चिकनी मिश्रण के लिए बनाता है। – plinth

+0

धन्यवाद, मैं मेकट्रांसपेंट का उपयोग करके समाप्त हुआ लेकिन फिल राइट के जवाब को स्वीकार करने का फैसला किया क्योंकि यह अधिक सामान्य है और सबसे अधिक वोट प्राप्त हुए हैं। – leod

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