2009-09-22 10 views
8

Mam określone ścieżki, które chciałbym przekonwertować na zasoby DrawingImage, ale brakuje mi czegoś.Jak używać ścieżki w DrawingImage?

tj

chcę wziąć coś takiego:

<Path Stroke="DarkGoldenRod" StrokeThickness="3" 
     Data="M 100,200 C 100,25 400,350 400,175 H 280" /> 

i używać go z czymś takim:

<DrawingImage x:Key='icon'> 
    <DrawingImage.Drawing> 
     <DrawingGroup> 
     <DrawingGroup.Children> 
      <GeometryDrawing ... /> 
      . . . 
     </DrawingGroup.Children> 
     </DrawingGroup> 
    </DrawingImage.Drawing> 
</DrawingImage> 

jakieś sugestie?

-DK

+0

Mam taki sam problem z danymi z pliku XPS wyeksportowanego z Inkscape. – jpierson

+0

Wstydzę się, że są na to dwa sposoby, które nie różnią się trywialnie ... –

+0

Używam Expression Design do eksportowania ResourceDictionary z 'DrawingBrush'es, i zmieniam nazwy na' DrawingImage's. – marbel82

Odpowiedz

6

ja zupełnie nie wiem, co chcesz zrobić ... dany komentarz do odpowiedzi Thomasa.

Jednak Expression Design umożliwia eksport na dwa różne sposoby WPF:

  1. Do ResourceDictionary gdzie grafika zamienia DrawingBrush (ES), lub
  2. Do płótnie gdzie grafika zamienia się po schodach (ów) i Kształt (y).

Podejście ResourceDictionary/DrawingBrush jest bardzo podobne do sugerowanej odpowiedzi udzielonej w pytaniu i na które Thomas odpowiedział.

To, co chciałbym zaproponować, to zaprojektować Twoją grafikę za pomocą Expression Design, a następnie zachować plik .design, aby można było eksportować do dowolnego formatu, który chcesz ... szczególnie w późniejszym czasie.

Teraz wiem, że wiele prac graficznych wykonuje się w Adobe Illustrator, a następnie konwertuje za pomocą Expression Design. W takim przypadku zachowałbym zarówno plik .ai, jak i plik .design, dzięki czemu zawsze można zmodyfikować kompozycję i wyeksportować ponownie.

Oczywiście, wszystko po to, aby obejść problem, którego nie można zaimportować xaml do Design Expression (tzn. Nie obsługuje scenariusza w obie strony).

Jedną z rzeczy, o których chciałbym wspomnieć, jest to, że czasami nie jest to tak proste, jak tylko skopiowanie języka mini-ścieżki z właściwości Path.Data do właściwości GeometryDrawing.Geometry ... z powodu zmiany rozmiaru scenariuszy (co oznacza, że ​​DrawingBrush (es) są zwykle ustawiane gdzieś w Wypełnieniu, a następnie wypełniają zwykle dowolną przestrzeń. Uważaj na to!

6

To powinno działać:

<DrawingImage x:Key='icon'> 
    <DrawingImage.Drawing> 
    <DrawingGroup> 
     <DrawingGroup.Children> 
     <GeometryDrawing Geometry="M 100,200 C 100,25 400,350 400,175 H 280"> 
      <GeometryDrawing.Pen> 
      <Pen Thickness="3" Brush="DarkGoldenRod"/> 
      </GeometryDrawing.Pen> 
     </GeometryDrawing> 
     </DrawingGroup.Children> 
    </DrawingGroup> 
    </DrawingImage.Drawing> 
</DrawingImage> 
+0

Wolałbym nie tłumaczyć ręcznie ścieżki na odpowiednik geometrii. Powodem tego wszystkiego jest to, że mam trochę sztuki xaml, która została stworzona za pomocą Blend i renderuje ścieżki za pomocą skróconej Ścieżki Xaml. Zauważyłem, że Expression Design używa tej samej składni krótkiej ścieżki, chyba że eksportujesz, a następnie używa składni, tak jak w twoim przykładzie. –

+0

Nie sądzę, że jest inny sposób, aby to zrobić w XAML, jeśli chcesz umieścić go w DrawingImage ... Prawdopodobnie można to zrobić z opóźnieniem kodu, jednak –

+0

Tak to zrobiłbym.Myślę, że brakuje tu niektórych informacji. – cplotts

Powiązane problemy