2009-06-03 5 views
6

Une société de design a réalisé un design d'application dans WPF il y a 2 ans, et maintenant nous cherchons à changer le texte sur l'une des images. Aucun fichier SVG n'a été fourni, seulement le code XAML utilisé, et le développeur qui a travaillé sur le projet à la société de conception n'y travaille plus. Je sais qu'il a utilisé Expression Blend pour le design.Pouvez-vous convertir un XAML DrawingImage en SVG pour l'éditer?

Toute aide avec moyens possibles pour convertir XAML comme cela SVG aiderait, ou même des suggestions sur quels outils ont été utilisés pour générer cette XAML. J'ai vu this topic on converting XAML to SVG, mais il semblait que les outils ne faisaient que des conversions avec des SVG convertis à l'origine dans leur outil.

Un dictionnaire de ressources contient tous les objets DrawingImage utilisés pour afficher des images via l'application. Voici une des images qui nous intéressent Editting:

<DrawingImage x:Key="MotorControlBackground"> 
<DrawingImage.Drawing> 
    <DrawingGroup> 
    <DrawingGroup.Children> 
     <GeometryDrawing Brush="#FF466280" Geometry="F1 M -1138.47,3547.06C -1128.45,3557.08 -1112.14,3557.17 -1102.23,3547.25L -1024.29,3469.32L -1118.83,3374.78L -1214.79,3470.74L -1138.47,3547.06 Z "> 
     <GeometryDrawing.Pen> 
      <Pen Thickness="2.5" MiterLimit="2.75" Brush="#FF212121"/> 
     </GeometryDrawing.Pen> 
     </GeometryDrawing> 
     <GeometryDrawing Brush="#FFFFFFFF" Geometry="F1 M -1131.22,3533.84L -1138.68,3533.84L -1138.68,3532.34L -1135.91,3532.34L -1135.91,3521.89L -1138.68,3521.89L -1138.68,3520.4C -1137.64,3520.4 -1136.87,3520.25 -1136.38,3519.95C -1135.88,3519.65 -1135.6,3519.09 -1135.54,3518.26L -1133.99,3518.26L -1133.99,3532.34L -1131.22,3532.34L -1131.22,3533.84 Z "/> 
     <!-- ... Heavily shortened. Expect around 100 more lines here ... --> 
     <GeometryDrawing Geometry="F1 M -1175.94,3268.96L -1057.64,3475.82"> 
     <GeometryDrawing.Pen> 
      <Pen Thickness="1.33333" MiterLimit="2.75" Brush="#88C7C7C7"/> 
     </GeometryDrawing.Pen> 
     </GeometryDrawing> 
     <GeometryDrawing Geometry="F1 M -1086.99,3255.92L -1147.5,3485.59"> 
     <GeometryDrawing.Pen> 
      <Pen Thickness="1.33333" MiterLimit="2.75" Brush="#88C7C7C7"/> 
     </GeometryDrawing.Pen> 
     </GeometryDrawing> 
     <GeometryDrawing Brush="#FF0C407C" Geometry="F1 M -1025.41,3324.46C -1035.45,3304.48 -1051.7,3288.14 -1071.58,3278.06C -1085.54,3270.98 -1101.28,3266.99 -1117.91,3266.99C -1131.79,3266.99 -1145.06,3269.78 -1157.2,3274.82C -1182.66,3285.41 -1203.09,3305.94 -1213.63,3331.52C -1218.64,3343.71 -1221.42,3357.05 -1221.42,3371C -1221.42,3385.48 -1218.44,3399.29 -1213.06,3411.83C -1202.56,3436.34 -1182.94,3456.06 -1158.55,3466.61C -1146.05,3472.01 -1132.31,3475.02 -1117.91,3475.02C -1103.67,3475.02 -1090.09,3472.09 -1077.72,3466.81C -1052.97,3456.24 -1033.07,3436.25 -1022.56,3411.38C -1017.3,3398.95 -1014.39,3385.3 -1014.39,3371C -1014.39,3354.3 -1018.37,3338.48 -1025.41,3324.46 Z "/> 
     <!-- ... shortened some more ... --> 
     <GeometryDrawing Geometry="F1 M -1021.98,3324.73C -1021.98,3355.74 -1069.88,3368.43 -1117.29,3372.09C -1117.75,3372.13 -1120.57,3372.05 -1120.57,3372.05C -1167.81,3368.32 -1215.32,3355.62 -1215.32,3324.73C -1215.32,3286.57 -1170.4,3255.35 -1115.48,3255.35L -1121.82,3255.35C -1066.92,3255.35 -1021.98,3286.57 -1021.98,3324.73 Z "> 
     <GeometryDrawing.Brush> 
      <LinearGradientBrush StartPoint="0.548505,0.143509" EndPoint="0.548505,0.805904"> 
      <LinearGradientBrush.GradientStops> 
       <GradientStop Color="#7FFFFFFF" Offset="0"/> 
       <GradientStop Color="#00FFFFFF" Offset="1"/> 
      </LinearGradientBrush.GradientStops> 
      </LinearGradientBrush> 
     </GeometryDrawing.Brush> 
     </GeometryDrawing> 
    </DrawingGroup.Children> 
    </DrawingGroup> 
</DrawingImage.Drawing> 
</DrawingImage> 

Répondre

5

Inkscape (un éditeur SVG) a un soutien limité pour XAML.

La dernière fois que je l'ai essayé, le support XAML n'était pas parfait, mais c'était il y a peut-être 6 mois. Il s'est peut-être amélioré depuis.

+1

Bien qu'il n'a pas résolu mon problème à la fin, j'ai accepté la réponse basée sur le fait que je ne savais pas que Inkscape avait le soutien XAML, et je pourrais probablement comprendre la mise en forme de Inkscape, copier-coller les chemins de mon propre XAML, et rouvrir. J'ai appris que le code ci-dessus a été généré en créant une image dans Illustrator, en l'important dans Micrsoft Design et en l'important dans Microsoft Blend. –

+0

Quel programme est conçu par Microsoft Design? http://www.microsoft.com/en/us/sitemap.aspx#Products révèle que la catégorie « Design & expérience utilisateur » contient Expression et Silverlight. –

+0

J'ai trouvé la solution. Il s'appelle Microsoft Expression Design 4 et est installé lors de l'installation de Microsoft Expression Studio 4 Ultimate. –

1

Il peut être une solution pour convertir XAML en PNG au moyen de http://www.codeproject.com/Articles/422523/Convert-XAML-Vector-Graphic-to-PNG puis en convertissant PNG en SVG. Il y a plus d'options entre PNG et SVG en termes de conversion. J'ai converti mes dessins XAML en EMF avec cette approche.

+2

XAML et SVG sont des formats vectoriels en .png est un format de pixel, donc il n'y a pas de point à aller de svg ... .png à – Peter

+0

@Peter il pourrait être utile à beaucoup de gens s'ils ont un outil qui ne prend pas en charge SVG . C'est trivial de passer du vecteur aux pixels, mais pas du tout. – Chazt3n

+1

@ Chazt3n lors du passage de vecteur pour vous pixel des données en vrac beaucoup de celui-ci, pour ainsi passer de Vector -> Pixel -> Vector est une mauvaise idée, si possible sauter l'étape de pixel sinon vous pouvez être 99,9% que ce ne est pas le même image vectorielle plus ... – Peter

Questions connexes