2011-08-17 13 views
9

यह एक काफी साधारण मुद्दा की तरह लगता है, लेकिन मुझे इसके आसपास काम करने का कोई तरीका नहीं दिख रहा है।सी # - डब्ल्यूपीएफ कैसे बिटमैप इमेज को अपरिवर्तित करना है ताकि मैं स्रोत फ़ाइल को हटा सकूं?

एक WPF विंडो में मेरे पास एक छवि है, image_small_pic। जुड़े सी # फ़ाइल में मुझे लगता है कि इस कोड का उपयोग का मान सेट:

Uri src = new Uri(image_source, UriKind.RelativeOrAbsolute); 
small_image_bmp = new BitmapImage(src); 
image_small_pic.Source = small_image_bmp; 

कहाँ small_image_bmp एक सार्वजनिक BitmapImage वस्तु है। लेकिन फिर यदि बाद में, यदि मैं small_image_bmp को किसी अन्य फ़ाइल में बदलता हूं और image_small_pic.Sassign को पुन: असाइन करता हूं, तो मूल छवि अभी भी बंद है और मैं इसे हटा नहीं सकता। यहां तक ​​कि अगर मैं बाद में कोशिश करता हूं तो यह अभी भी बंद है। कोई विचार मैं इसे कैसे मुक्त कर सकता हूं?

उत्तर

12

this article देखें। WPF छवियों के साथ कुछ अजीब व्यवहार है जो आप आ रहे हैं। समाधान बाइट्स में स्वयं को पढ़ना है और फिर उनके आधार पर एक छवि बनाना है, क्योंकि यदि आप फ्रेमवर्क को इसे संभालने देते हैं, तो फ़ाइल लॉक रहेगी।

+0

हम्म दिलचस्प, मैं इसे आज़मा दूंगा और देख सकता हूं कि यह – cost

+0

काम करता है, यह ठीक है, धन्यवाद! क्या एक अजीब समाधान है, लेकिन निश्चित रूप से एक काम करता है। – cost

2
Uri src = new Uri(image_source, UriKind.RelativeOrAbsolute); 
var small_image_bmp = new BitmapImage(); 
small_image_bmp.BeginInit(); 
small_image_bmp.CacheOption = BitmapCacheOption.OnLoad; 
small_image_bmp.UriSource = src; 
small_image_bmp.EndInit(); 

image_small_pic.Source = small_image_bmp; 
संबंधित मुद्दे