2012-04-18 31 views
7

पर एक WPF विजुअल प्रस्तुत करना मैं WPF चार्ट घटक पर काम कर रहा हूं। मुझे चार्ट दृश्य को मेटाफाइल (डब्लूएमएफ/ईएमएफ) में प्रस्तुत करने के लिए एक सुविधा को कार्यान्वित करने की आवश्यकता है, ताकि उपयोगकर्ता उस फ़ाइल को Word या Powerpoint जैसे किसी भी कार्यालय उत्पाद में पेस्ट कर सके और प्रस्तुत छवि की गुणवत्ता को प्रभावित किए बिना फ़ाइल का आकार बदल सके।डब्लूएमएफ/ईएमएफ फ़ाइल

मैंने यहां इसके बारे में कुछ समान प्रश्न देखे थे लेकिन उनमें से कोई भी उपयोगी उत्तर नहीं देता है।

मैंने कुछ पोस्टों से सीखा था कि डब्ल्यूपीएफ सुरक्षा चिंताओं के कारण ईएमएफ/डब्लूएमएफ को प्रतिपादन दृश्य का समर्थन नहीं करता है, लेकिन इसके लिए कुछ प्रतिस्थापन होना चाहिए जो Winform आधारित एप्लिकेशन और कार्यालय के लिए प्रदान की गई ईएमएफ/डब्लूएमएफ जैसी बातचीत की अनुमति देनी चाहिए सूट या एमएस-पेंट।

आगे बढ़ने के लिए कोई सुझाव स्वागत है, धन्यवाद।

उत्तर

3

हाँ XPS मुद्रण ठीक है, लेकिन आप कोई मेटाफ़ाइल में प्राप्त करने के लिए, चाहते थे? बस इस देखा जो लिंक

Does WPF support reading/writing WMF/EMF files natively?

इन 2 लिंक की तरह लग रहा रुचि का हो सकता के सबसे निचले भाग सेट पर देखने में मदद मिल सकती

http://softronix.com/download/WpfToWmfClipboard.zip

http://xamltoys.codeplex.com/

+0

मैं आपकी प्रतिक्रिया सच्चा की सराहना करता हूं, XamlToys एक अच्छा समाधान हो सकता है लेकिन उन्हें समझना कि उन्हें ईएमएफ प्रस्तुत करने में काफी समय लगता है, हालांकि अभी तक एकमात्र समाधान की तरह दिखता है। – Pank

+0

ग्रेट !!!!!!! आपका बहुत बहुत धन्यवाद ! –

1

मुझे लगता है कि आप क्या करना चाहते हैं RenderTargetBitmap कक्षा का उपयोग पहले अपने नियंत्रण की छवि प्राप्त करने के लिए करें, और उसके बाद उसे ईएमएफ में परिवर्तित करें।

वास्तव में इस ब्लॉग पोस्ट आप एक बहुत अच्छा प्रारंभिक बिंदु देता है: http://www.switchonthecode.com/tutorials/wpf-tutorial-getting-from-wpf-to-a-metafile-and-onto-the-clipboard

कहा, जब से तुम एक बीएमपी के साथ काम कर रहे हैं (जो कि तुम क्या WPF से मिलेगा) परिणामी छवि वेक्टर आधारित होना नहीं होता यहां तक ​​कि जब आप इसे ईएमएफ फ़ाइल के रूप में सहेजते हैं।

Anway मुझे आशा है कि आप में मदद करता है किसी तरह

+0

धन्यवाद, धन्यवाद, मुझे आपके द्वारा सुझाए गए तरीके से पता है, यह मुझे एमएस शब्द या पावरपॉइंट में परिणामस्वरूप ईएमएफ को स्केल करने में मदद नहीं करेगा क्योंकि यह अभी भी स्केलिंग पर ग्राफिक्स गुणवत्ता खो देगा। क्या आप किसी अन्य तरीके से जानते हैं जिसके द्वारा मैं प्रत्यक्ष रूप से या किसी अन्य इंटरमीडिएट प्रारूप का उपयोग करके दृश्य को प्रस्तुत कर सकता हूं। – Pank

+0

जैसा कि मुझे पता है कि हम एक्सपीएस के लिए दृश्य प्रस्तुत कर सकते हैं जो एक वेक्टर आधारित प्रारूप है और मैंने पहले ही प्रिंटिंग कार्यक्षमता को लागू करने के लिए उपयोग किया है, लेकिन क्लिपबोर्ड या एमएस शब्द इनपुट प्रारूप के रूप में एक्सपीएस स्वीकार करने और इसे प्रस्तुत करने की कार्यक्षमता से सुसज्जित नहीं हैं। – Pank

1

मैं लिए एक समाधान है यह, मैंने एक दृश्य को एएमएफ में बदलने के लिए XamlToys का उपयोग किया था, यह निम्नलिखित हैं: फ्रेमवर्क तत्व प्राप्त करें। इसे एक एक्सपीएस में कनवर्ट करें, फिर इसे XamlStream में कनवर्ट करें और फिर इसे XamlToys का उपयोग करके ईएमएफ में परिवर्तित करें। यह अच्छी तरह से काम करता है और एक उच्च गुणवत्ता वाले एएमएफ देता है।

इसे आज़माएं, और अगर यह मदद करता है तो मुझे बताएं।

+0

पंक, 4 मई से आपके सारांश के लिए धन्यवाद। मैंने कोशिश की है। उन लोगों के लिए एक नोट जो समाधान का उपयोग करना चाहते हैं: XamlToys ने Visual3D लागू नहीं किया है (GetDrawingFromXaml() अपवाद को फेंकता है 'विजुअल 3 डी लागू नहीं किया गया है')।इसलिए यदि Visual3D का उपयोग किया जाता है तो XamlToys समाधान नहीं है। – Falo