2012-04-18 51 views
7

Tôi đang làm việc trên thành phần biểu đồ WPF. Tôi cần triển khai tính năng để hiển thị Biểu đồ trực quan thành siêu tệp (WMF/EMF) để người dùng có thể dán tệp đó vào bất kỳ sản phẩm văn phòng nào như Word hoặc Powerpoint và có thể định lại kích thước tệp mà không ảnh hưởng đến chất lượng của hình ảnh được hiển thị.Hiển thị hình ảnh WPF thành tệp WMF/EMF

Tôi đã thấy một số câu hỏi tương tự về nó ở đây nhưng không có câu hỏi nào mang lại bất kỳ câu trả lời hữu ích nào.

Tôi đã học được từ một số bài đăng mà WPF không hỗ trợ hiển thị trực quan cho EMF/WMF do lo ngại về bảo mật, nhưng phải có một số thay thế cho nó. phù hợp hoặc ms-sơn.

Bất kỳ đề xuất nào để chuyển tiếp đều được chào đón, cảm ơn bạn.

Trả lời

3

Vâng in xps là ok nhưng bạn muốn tham gia vào metafile, phải không? Chỉ cần thấy điều này có thể giúp nhìn vào bộ rất đáy liên kết

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

Hình như những 2 liên kết có thể quan tâm

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

http://xamltoys.codeplex.com/

+0

Tôi đánh giá cao phản ứng của bạn Sacha, XamlToys có thể là một giải pháp tốt nhưng phải mất rất nhiều thời gian để tạo ra EMF, mặc dù trông giống như giải pháp duy nhất hiện tại. – Pank

+0

GREAT !!!!!!! Cảm ơn rất nhiều ! –

1

Tôi sẽ nghĩ rằng những gì bạn muốn làm là sử dụng lớp RenderTargetBitmap để trước hết có được một hình ảnh kiểm soát của bạn, và sau đó chuyển đổi nó thành một EMF.

Trong thực tế bài viết trên blog này cung cấp cho bạn một điểm khởi đầu khá tốt: http://www.switchonthecode.com/tutorials/wpf-tutorial-getting-from-wpf-to-a-metafile-and-onto-the-clipboard

Điều đó nói rằng, kể từ khi bạn đang làm việc với một BMP (đó là những gì bạn sẽ nhận được từ WPF) hình ảnh kết quả sẽ không được vector dựa ngay cả khi bạn quản lý để lưu nó dưới dạng tệp EMF.

Anway Tôi hy vọng rằng sẽ giúp bạn theo cách nào đó

+0

cảm ơn bạn sacha, tôi biết cách bạn đề nghị, nó sẽ không giúp tôi để mở rộng EMF kết quả trong ms word hoặc powerpoint vì nó vẫn sẽ mất chất lượng đồ họa trên scaling. Bạn có biết bất kỳ cách nào khác mà tôi có thể hiển thị trực quan cho emf trực tiếp hoặc bằng cách sử dụng bất kỳ định dạng nào khác. – Pank

+0

Như tôi biết, chúng tôi có thể hiển thị trực quan thành xps là định dạng dựa trên vector và tôi đã sử dụng tính năng này để triển khai chức năng in, nhưng từ clipboard hoặc ms không được trang bị chức năng chấp nhận xps làm định dạng đầu vào và hiển thị. – Pank

1

Tôi có một giải pháp cho này, Tôi đã sử dụng XamlToys để chuyển đổi hình ảnh thành Emf sau đây là các bước để đạt được điều đó: Lấy phần tử khung. Chuyển đổi nó thành XPS Sau đó chuyển đổi nó sang XamlStream Và sau đó chuyển đổi nó sang EMF bằng cách sử dụng XamlToys. Nó hoạt động tốt và cung cấp một Emf chất lượng cao.

Hãy thử và cho tôi biết nếu điều đó có ích.

+0

Pank, cảm ơn bạn đã tóm tắt của bạn từ tháng 4. Tôi đã thử nó. Một lưu ý cho những người muốn sử dụng giải pháp: XamlToys chưa triển khai Visual3D (GetDrawingFromXaml() ném ngoại lệ 'Visual3D không được triển khai').Vì vậy XamlToys không phải là một giải pháp nếu Visual3D được sử dụng. – Falo

Các vấn đề liên quan