के रूप में प्रस्तुत करने के लिए मैं एक डीएलएल में उपयोगकर्ता नियंत्रण को तत्काल रूप से पीएनजी फ़ाइल के रूप में सहेजने के लिए तत्काल करना चाहता हूं। यह आमतौर पर PngBitmapEncoder और RenderTargetBitmap के साथ कोई समस्या नहीं है।WPF Instantiate उपयोगकर्ता नियंत्रण प्रोग्रामिंग रूप से इसे पीएनजी
- मैं नियंत्रण कैसे दृष्टांत है:
यह मेरा सवाल कर रहे हैं? बस नए ऑपरेटर के साथ?
- क्या मुझे इसे एक अलग थ्रेड में तुरंत चालू करना है?
- मैं अपने सभी बच्चों को अपडेट करने और खुद को फिर से प्रस्तुत करने के लिए नियंत्रण को कैसे मजबूर करूं?
[STAThread] static void Main(string[] args) { LetterFrequency let = new LetterFrequency(); let.Width = 600; let.Height = 400; let.Background = Brushes.White; let.Measure(new Size(let.Width, let.Height)); let.Arrange(new Rect(new Size(let.Width, let.Height))); let.UpdateLayout(); RenderTargetBitmap bitmap = new RenderTargetBitmap((int)let.Width, (int)let.Height, 96d, 96d, PixelFormats.Pbgra32); bitmap.Render(let); PngBitmapEncoder png = new PngBitmapEncoder(); png.Frames.Add(BitmapFrame.Create(bitmap)); using (Stream stm = File.Create("test.png")) { png.Save(stm); } }
आप इस तरह से अनुप्रयोग चलाने के हैं, तो यह PNG फ़ाइल उत्पन्न करता है:
इस उपयोगकर्ता नियंत्रण का दृष्टांत और PNG फ़ाइल के रूप में सहेज करने के लिए अपने कोड है (LetterFrequency उपयोगकर्ता नियंत्रण है) , लेकिन एक्सएएमएल में जो डेटा जोड़ा जाएगा, वह दिखाई नहीं दे रहा है, अगर आप एक्सएएमएल डिज़ाइनर को देखते हैं, तो आप कुछ बुलबुले वाले चार्ट देख सकते हैं। पीएनजी फ़ाइल में केवल चार्ट क्षेत्र है, लेकिन कोई बुलबुले नहीं है? यह क्यों? मुझे लगता है कि अद्यतन/प्रतिपादन समस्या है, लेकिन इसे कैसे हल करें?
यहां विजुअल स्टूडियो समाधान है, इसमें कंसोल प्रोजेक्ट है, जो उपयोगकर्ता के नियंत्रण को पीएनजी फ़ाइल और चार्ट के लिए WPF टूलकिट की दो अन्य परियोजनाओं में प्रस्तुत करता है।
यह पर एक नज़र डालें, यह exe-फ़ोल्डर में क्रमश: बिन/डीबग में PNG फ़ाइल उत्पन्न करेगा: http://www.file-upload.net/download-1904406/ChartRenderBitmap.zip.html
यह समस्याओं के बिना काम करता है आशा है!
धन्यवाद!
अपने दिलचस्प समाधान के लिए धन्यवाद, लेकिन चार्ट की पीढ़ी के रूप में तेजी से संभव के रूप में किया जाना चाहिए, ताकि कोई एनीमेशन सबसे अच्छा होगा। एनीमेशन को ओवरराइड करने के लिए, मैंने बस बबल डेटा पॉइंट के लिए एक नया नियंत्रण टेम्पलेट बनाया है, लेकिन अब किंवदंती आइटम के साथ एक और समस्या है। मेरे उत्तर पोस्ट पर एक नज़र डालें! –