2010-02-05 8 views
5

मुद्रण मैं एक फ्रेम के साथ एक WPF खिड़की है। मेरे पास printdialog और printvisual का उपयोग कर फ्रेम की सामग्री मुद्रित करने के लिए कुछ कोड है। लेकिन यह केवल स्क्रीन पर दिखाई देने वाले प्रिंट को प्रिंट करेगा, भले ही फ्रेम स्क्रॉल और अन्य भाग उपलब्ध हों।WPF - पृष्ठांकन जब एक दृश्य

वहाँ पृष्ठांकन जोड़ सकते हैं और यह सुनिश्चित करें कि मेरी फ्रेम की संपूर्ण सामग्री प्रिंट होगा बनाने के लिए एक रास्ता है।

या क्या मेरी फ्रेम सामग्री लेने और इसे प्रिंट करने का कोई और तरीका है? यानी printvisual का उपयोग नहीं करने के लिए?

उत्तर

13

हां। मैंने यह किया है यह बहुत मुश्किल नहीं है।

  1. एक ScrollViewer जो आम तौर पर अपने क्षैतिज और ऊर्ध्वाधर स्क्रॉल करना अक्षम

  2. है जब आप प्रिंट ऊर्ध्वाधर स्क्रॉल सक्षम करने के लिए तैयार हैं अंदर अपने फ्रेम लपेटें। इससे फ्रेम को बताया जा सकता है कि इसमें अनंत ऊर्ध्वाधर स्थान है, इसलिए यह सभी सामग्री प्रस्तुत करेगा। फिर अपडेट करने के लिए लेआउट प्राप्त करने के लिए UpdateLayout() को कॉल करें।

  3. प्रत्येक पृष्ठ के लिए एक ही फ्रेम को वापस करने के लिए IDocumentPaginator लागू करें, लेकिन वास्तविक फ्रेम के एक अलग हिस्से को दिखाने के लिए प्रत्येक बार क्लिप और रेंडरट्रांसफॉर्म समायोजित करें।

  4. प्रिंट अपने कस्टम IDocumentPaginator

उपरोक्त विवरण का उपयोग कर मानता है कि आप पृष्ठ चौड़ाई के फ्रेम की चौड़ाई को ठीक करने और यह खड़ी पृष्ठ पर अंक लगाना चाहते हैं। यह एक वेब पेज के लिए उपयुक्त होगा लेकिन स्प्रेडशीट के लिए नहीं। स्प्रेडशीट जैसी सामग्री के लिए आप स्क्रॉलव्यूअर को दोनों दिशाओं में स्क्रॉल करने की अनुमति देने के लिए सेट करेंगे, फ्रेम को अनंत स्थान प्रदान करेंगे। इस मामले में IDocumentPaginator RenderTransforms को छोड़कर वही है और क्लिपिंग को क्षैतिज और लंबवत दोनों को फिर से चलाने के लिए चुना जाता है।

यह तकनीक वास्तव में केवल एक फ्रेम नहीं, किसी भी WPF सामग्री के लिए काम करती है।

+0

हाय रे, यह दिलचस्प लग रहा है ... क्या आप हमें कुछ कोड नमूने दे सकते हैं कि आपने इसे कैसे प्राप्त किया? बहुत धन्यवाद! – Sid

+0

मुझे यह भी जानना है कि यह कैसे किया जाता है, रे। कोई ** अच्छा ** नमूने या चरण-दर-चरण ट्यूटोरियल उपलब्ध हैं? – DeMama

+0

हो सकता है कि यह प्रारंभ करने में मदद करेगा http://robertmcintosh.ca/2011/02/05/paginated-printing-of-wpf-visuals/ –

0

आप VisualTreeHelper साथ दृश्य पेड़ के माध्यम से लूप रिकर्सिवली एक प्रवाह दस्तावेज़ में उपयोग के लिए एक तत्व के लिए सभी पाया नियंत्रण का अनुवाद कर सकते हैं और। यह प्रवाह-दस्तावेज़ आप प्रिंट कर सकते हैं। मुझे लगता है कि सीधे gui से सामग्री मुद्रित करने के लिए कोई स्वीकार्य तरीका नहीं है।