मेरे पास एक WPF एप्लिकेशन है जिसे उपयोगकर्ता को आंतरिक स्थिति के बारे में प्रतिक्रिया प्रदान करने की आवश्यकता है। डिजाइन में तीन छवियां हैं, उन्हें लाल, पीला, और हरा कहें। इन छवियों में से एक राज्य के आधार पर एक समय में प्रदर्शित किया जाएगा। यहाँ बिंदु हैं:मैं गुणों में एक छवि के साथ WPF में कोड-बैक से गतिशील रूप से एक छवि स्रोत कैसे बदलूं? स्रोत?
- तीन छवियों कोड-पीछे
- छवियों का केवल एक में Properties.Resources में हैं एक समय में दिखाया जाएगा।
- राज्य परिवर्तन कोड-पीछे की प्रक्रिया से आता है और उपयोगकर्ता से नहीं।
- मैं एक छवि नियंत्रण बांधना चाहता हूं ताकि मैं छवि को कोड-पीछे से बदल सकूं।
मैं यह सोचते हैं रहा हूँ मैं एक छवि कनवर्टर की आवश्यकता होगी इस तरह के रूप में एक छवि स्रोत के लिए JPG छवि को बदलने के लिए:
[ValueConversion(typeof(System.Drawing.Bitmap), typeof(ImageSource))]
public class BitmapToImageSourceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var bmp = value as System.Drawing.Bitmap;
if (bmp == null)
return null;
return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
bmp.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
मैं छवियों कन्वर्ट करने के लिए पसंद करते हैं एक बार प्रारंभिकरण के दौरान और छवि स्रोतों की एक सूची रखें। मैं भी यह सोचते हैं रहा हूँ मैं करने के लिए बाध्य करने के लिए नियंत्रण निर्भरता संपत्ति की आवश्यकता होगी, लेकिन मैं उस छवि के सूत्रों की इस सूची के साथ सेट करने का तरीका यकीन नहीं है:
// Dependancy Property for the North Image
public static readonly DependencyProperty NorthImagePathProperty
= DependencyProperty.Register(
"NorthImagePath",
typeof(ImageSource),
typeof(MainWindow),
new PropertyMetadata("**Don't know what goes here!!!**"));
// Property wrapper for the dependancy property
public ImageSource NorthImagePath
{
get { return (ImageSource)GetValue(NorthImagePathProperty); }
set { SetValue(NorthImagePathProperty, value); }
}
क्लेमेंस आप रॉक! यह एक शानदार, व्यापक, समझने में आसान प्रतिक्रिया थी। मैं बाध्यकारी विकल्प का उपयोग करने के लिए प्रेरित हूं, लेकिन मेरे मामले में कोड-बैक में स्रोत को सेट करने का पहला विकल्प बहुत ही सुरुचिपूर्ण है। एकमात्र समस्या यह है कि मैं इसे पीएनजी फाइलों के साथ काम नहीं कर सका। मैं एक पारदर्शी पृष्ठभूमि की उम्मीद कर रहा था। क्या यह पीएनजी फाइलों के साथ काम करना चाहिए? क्या मैं बस कुछ गलत कर रहा हूं, या वे समर्थित नहीं हैं? – dtaylor
यह पीएनजी फ़ाइलों के साथ भी काम करना चाहिए। शायद आपको उन्हें अपने प्रोजेक्ट में संसाधन के रूप में नहीं जोड़ना चाहिए (मेरा संपादन देखें)। बस अपनी पसंदीदा छवि उपकरण के साथ फाइलें बनाएं और उन्हें अपनी परियोजना में किसी फ़ोल्डर में जोड़ें। स्वीकार करने के बारे में [यहां] (http://meta.stackexchange.com/a/5235) देखें। – Clemens
क्लेमेंस, फिर से आपने एक स्पष्ट और संक्षिप्त उत्तर प्रदान किया है! पीएनजी फ़ाइल बहुत बढ़िया काम करती है जब मैं इसे एक फ़ोल्डर में डाल रहा हूं और संसाधनों के रूप में इसे संसाधन के रूप में जोड़ने के बजाय संसाधन के रूप में बना रहा हूं। संसाधन डिजाइनर में संसाधन। बहुत - बहुत धन्यवाद। – dtaylor