2011-09-13 13 views
6

की आवश्यकता है मैं Winforms, CAB, C# और Infragistics के साथ काम कर रहा हूं। मैं डब्ल्यूसीएफ से जुड़े अपने बैकएंड के साथ एमवीपी के साथ काम करने की कोशिश कर रहा हूं।छवि पर डाटाबेसिंग लेकिन मुझे एक बाइटएरे

मेरे प्रस्तुतकर्ता में मेरे पास मेरा मॉडल है, चलिए इसे एग्रीमेंटडाटा कंट्रैक्ट कहते हैं। इस डेटा अनुबंध में गुणों का एक समूह है:

... 
    [DataMember] 
    public byte[] PVImage { get; set; } 

    [DataMember] 
    public byte[] OntwerpImage { get; set; } 

    [DataMember] 
    public Decimal WattpiekPrijs { get; set; } 
    ... 

आप देखेंगे कि छवि बाइट [] के रूप में संग्रहीत है। मैं अपने उपयोगकर्ता नियंत्रण पर नियंत्रण करने के लिए इन विशेषताओं के लिए बाध्य:

BindingHelper.BindField(_ultraPictureBoxPV, "Image", _bindingSource, "PVImage"); 
    BindingHelper.BindField(_ultraPictureBoxOntwerp, "Image", _bindingSource, "OntwerpImage"); 

BindingHelper सिर्फ निर्दिष्ट Controler करने के लिए एक BindingContext कहते हैं (control.BindingContext.Add (...))।

वैसे भी, समस्या: डेटा अनुबंध में एक बाइटियर के रूप में छवि होती है, जबकि मैं एक छवि के लिए बाध्यकारी हूं। इस का कारण बनता है रहने के लिए विशेषता "अशक्त", क्योंकि वह एक bytearray में एक छवि डालने का मन नहीं करता;)

मैं चारों ओर के साथ खेल की कोशिश की है, लेकिन मुझे लगता है कि मैं 2 संभावनाएं है:

  1. मैं एक प्रकार का कनवर्टर उपयोग करने का प्रयास कर सकता हूं? तो जब एक छवि डाली जाती है तो इसे मॉडल (= डाटाबेसिंग) के लिए छवि के बजाय बाइटएरे के रूप में पास किया जाता है।

  2. मैं बाध्यकारी छोड़ सकता हूं और फॉर्म "सबमिट" होने पर एक ईवेंट बना सकता हूं और छवि को बाइट में परिवर्तित कर सकता हूं और मॉडल को भर सकता हूं। (= कोई डेटाबेस नहीं)

टीएल; डीआर; क्या आपको किसी छवि को एक बाइट्रैरे में "कन्वर्ट" करने का तरीका पता है जब इसे डेटाबेस में पास किया जा रहा है?

मुझे आशा है कि मेरा प्रश्न स्पष्ट है! मदद

उत्तर

3

मैं टाइप छवि की एक नई संपत्ति जोड़ूंगा जो आपके अल्ट्राचित्रचित्र नियंत्रण पर बाध्यकारी होगा। दो विधियों को जोड़ें जो किसी भी दिशा में परिवर्तित करने के बारे में जानते हैं।

[DataMember] 
public Image OntwerpImageImage 
{ 
    get { return ConvertByteArrayToImage(OntwerpImage); } 
    set { OntwerpImage = ConvertImageToByteArray(value); } 
} 

//[DataMember] 
public byte[] OntwerpImage { get; set; } 

public Image ConvertByteArrayToImage(Byte[] bytes) 
{ 
    var memoryStream = new MemoryStream(bytes); 
    var returnImage = Image.FromStream(memoryStream); 
    return returnImage; 
} 

public Byte[] ConvertImageToByteArray(Image image) 
{ 
    var memoryStream = new MemoryStream(); 
    image.Save(memoryStream, ImageFormat.Jpeg); 
    return memoryStream.ToArray(); 
} 
+0

धन्यवाद, मैं कल कोशिश करूँगा! –