2009-09-22 15 views
8

Tengo algunas rutas definidas que me gustaría convertir en recursos de DrawingImage pero me falta algo.Cómo utilizar la ruta en un DrawingImage?

decir

quiero tomar algo como esto:

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

y usarlo con algo como esto:

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

¿Alguna sugerencia?

-dk

+0

Tengo el mismo tipo de problema con los datos de un archivo XPS exportado desde Inkscape. – jpierson

+0

Es una pena que haya dos formas de hacerlo que difieran de manera no trivial ... –

+0

Uso Expression Design para exportar ResourceDictionary con 'DrawingBrush'es, y cambio los nombres a' DrawingImage's. – marbel82

Respuesta

6

Estoy totalmente de no sé lo que quieres hacer ... dada su comentario a la respuesta de Thomas.

Sin embargo, Expression Design puede exportar de dos maneras WPF diferentes:

  1. Para un ResourceDictionary donde la obra se convierte en DrawingBrush (s), o
  2. Para un lienzo donde la obra se convierte en el camino (s) y Forma (s).

El enfoque ResourceDictionary/DrawingBrush es muy similar a la respuesta sugerida que dio en la pregunta y con la que Thomas respondió.

Lo que sugeriría es diseñar su obra de arte con Expression Design y luego mantener el archivo .design para que pueda exportarlo al formato que desee ... especialmente en un momento posterior.

Ahora, sé que una gran cantidad de ilustraciones se realiza en Adobe Illustrator y luego se convierte utilizando Expression Design. Si ese es el caso, mantendría tanto el archivo .ai como el archivo .design para que siempre pueda modificar su obra de arte y exportar de nuevo.

Por supuesto, esto es todo para evitar el problema de que no se puede importar xaml a Expression Design (es decir, no es compatible con un escenario de ida y vuelta).

Una cosa que mencionaría es que a veces no es tan fácil como simplemente copiar el lenguaje de mini-ruta de la propiedad Path.Data a la propiedad GeometryDrawing.Geometry ... debido a los escenarios de redimensionamiento (lo que significa que DrawingBrush (es) normalmente se configuran como un relleno en algún lugar y luego suelen llenar cualquier espacio que haya). Por lo tanto, ten cuidado con eso!

6

esto debería funcionar:

<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

Preferiría no traducir la ruta en el equivalente de geometría manualmente. El motivo de todo esto es que tengo un poco de arte xaml que se creó con Blend y representa los caminos usando la ruta abreviada xaml. Observé que Expression Design usa la misma sintaxis corta de ruta a menos que exportes, luego usa la sintaxis como en tu ejemplo. –

+0

No creo que haya otra forma de hacerlo en XAML si quieres ponerlo en una DrawingImage ... Probablemente podrías hacerlo en código subyacente sin embargo –

+0

Así es como lo haría.Creo que nos falta algo de información aquí. – cplotts

Cuestiones relacionadas