2012-04-18 16 views
7

Pracuję nad komponentem wykresu WPF. Potrzebuję zaimplementować funkcję do renderowania wykresu wizualnego do metapliku (WMF/EMF), aby użytkownik mógł wkleić ten plik w dowolnym produkcie biurowym, takim jak Word lub Powerpoint, i może zmienić rozmiar pliku bez wpływu na jakość renderowanego obrazu.Renderowanie pliku WPF Visual do pliku WMF/EMF

Tutaj widziałem podobne pytania, ale żadna z nich nie przynosi przydatnych odpowiedzi.

Dowiedziałem się z niektórych postów, że WPF nie obsługuje renderowania wizji do EMF/WMF ze względu na obawy związane z bezpieczeństwem, ale musi tam być jakiś zamiennik, który powinien umożliwiać interakcję, taką jak EMF/WMF przewidziana dla aplikacji i biura Winform suit lub ms-paint.

Wszelkie sugestie dotyczące dalszych działań są mile widziane, dziękuję.

Odpowiedz

3

Tak drukowanie XPS jest ok, ale chciał się dostać do metafile, nie? Właśnie widziałem ten, który może pomóc spojrzeć na samym dole zestawu łączy

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

wygląda tych 2 linki mogą być interesujące

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

http://xamltoys.codeplex.com/

+0

Doceniam twoją odpowiedź Sacha, XamlToys może być dobrym rozwiązaniem, ale z nimi potrzeba czasu, aby wyrenderować EMF, ale od tej chwili wygląda jak jedyne rozwiązanie. – Pank

+0

WSPANIAŁE !!!!!!! Wielkie dzięki ! –

1

Zastanowiłbym się, co chciałbyś zrobić, to użyć klasy RenderTargetBitmap, aby najpierw uzyskać Obraz kontroli, a następnie przekonwertować ją na pole elektromagnetyczne.

W rzeczywistości to blogu daje dość dobry punkt wyjścia: http://www.switchonthecode.com/tutorials/wpf-tutorial-getting-from-wpf-to-a-metafile-and-onto-the-clipboard

Powiedział, że skoro pracujesz z BMP (czyli to, co dostaniesz z WPF) wynikowy obraz nie byłby oparty wektor nawet jeśli uda ci się zapisać go jako plik EMF.

Anway Mam nadzieję, że pomaga w jakiś sposób

+0

dziękuję Sacha, znam sposób, w jaki zasugerowałeś, to nie pomoże mi skalować wynikowej EMF w ms słowo lub Powerpoint, ponieważ nadal będzie tracić jakość grafiki na skalowanie. Czy znasz inny sposób, w jaki mogę renderować visual do emf bezpośrednio lub używając dowolnego innego formatu intermidiet. – Pank

+0

Jak wiem, możemy renderować wizualne do formatu XPS, który jest formatem wektorowym i już to wykorzystałem do zaimplementowania funkcji drukowania, ale słowo schowka lub MS nie jest wyposażone w funkcję akceptowania xps jako formatu wejściowego i renderowania go. – Pank

1

Mam rozwiązanie to, Użyłem XamlToys, aby przekonwertować wizualizację na Emf . Oto kroki, aby to osiągnąć: Pobierz element ramowy. Konwersja do XPS Następnie przekonwertuj go na XamlStream , a następnie przekonwertuj go na EMF za pomocą XamlToys. Działa dobrze i daje emf wysokiej jakości.

Spróbuj, i daj mi znać, jeśli to pomoże.

+0

Pank, dziękuję za podsumowanie od 4 maja. Próbowałem. Uwaga dla tych, którzy chcą skorzystać z rozwiązania: XamlToys nie zaimplementował Visual3D (GetDrawingFromXaml() zgłasza wyjątek "Visual3D nie zaimplementowany").Dlatego XamlToys nie jest rozwiązaniem, jeśli używany jest Visual3D. – Falo

Powiązane problemy