2009-06-03 24 views
6

Một công ty thiết kế đã thiết kế ứng dụng trong WPF 2 năm trước và bây giờ chúng tôi đang xem xét việc thay đổi văn bản trên một trong các hình ảnh. Không có tệp SVG nào được cung cấp, chỉ có mã XAML được sử dụng và nhà phát triển đã làm việc trên dự án tại công ty thiết kế không còn hoạt động ở đó nữa. Tôi biết anh ấy sử dụng Blend Expression cho thiết kế.Bạn có thể chuyển đổi XAML DrawingImage trở lại thành SVG để chỉnh sửa không?

Bất kỳ trợ giúp nào với các cách có thể chuyển đổi XAML như thế này thành SVG sẽ giúp, hoặc thậm chí đề xuất trên công cụ nào được sử dụng để tạo XAML này. Tôi thấy this topic on converting XAML to SVG, nhưng có vẻ như các công cụ chỉ thực hiện chuyển đổi với SVG ban đầu được chuyển đổi trong công cụ của họ.

Từ điển tài nguyên chứa tất cả các đối tượng DrawingImage được sử dụng để hiển thị hình ảnh thông qua ứng dụng. Dưới đây là một trong những hình ảnh chúng tôi đang xem xét chỉnh sửa:

<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> 

Trả lời

5

Inkscape (trình chỉnh sửa SVG) đã hỗ trợ giới hạn cho XAML.

Lần cuối cùng tôi thử nó, sự hỗ trợ XAML không hoàn hảo, nhưng đó có thể là 6 tháng trước. Nó có thể đã được cải thiện kể từ đó.

+1

Mặc dù nó không giải quyết được vấn đề của tôi, tôi chấp nhận câu trả lời dựa trên thực tế là tôi không nhận ra Inkscape có hỗ trợ XAML, và tôi có thể tìm ra định dạng của Inkscape, sao chép-dán Đường dẫn từ XAML của riêng tôi và mở lại. Tôi đã học được rằng đoạn code trên đã được tạo ra thông qua việc tạo một hình ảnh trong Illustrator, nhập nó vào Micrsoft Design và nhập nó vào Microsoft Blend. –

+0

Chương trình Microsoft có ý nghĩa gì? http://www.microsoft.com/en/us/sitemap.aspx#Products cho thấy danh mục "Thiết kế và trải nghiệm người dùng" chỉ chứa Biểu thức và Silverlight. –

+0

Tôi đã tìm ra giải pháp. Nó được gọi là Microsoft Expression Design 4 và được cài đặt khi cài đặt Microsoft Expression Studio 4 Ultimate. –

1

Nó có thể là một giải pháp để chuyển đổi XAML thành PNG bằng phương tiện http://www.codeproject.com/Articles/422523/Convert-XAML-Vector-Graphic-to-PNG và sau đó chuyển đổi PNG sang SVG. Có nhiều tùy chọn hơn giữa PNG và SVG về chuyển đổi. Tôi đã chuyển đổi các bản vẽ XAML của tôi thành EMF bằng cách tiếp cận này.

+2

Xaml và SVG là định dạng vectơ trong khi png là định dạng pixel, do đó không có điểm chuyển từ png sang svg ... – Peter

+0

@Peter nó có thể liên quan đến nhiều người nếu họ có công cụ không hỗ trợ SVG . Đó là tầm thường để đi từ vector đến điểm ảnh, chỉ cần không phải ở tất cả các cách khác xung quanh. – Chazt3n

+1

@ Chazt3n khi chuyển từ vectơ sang pixel, bạn mất rất nhiều dữ liệu, do đó, đi từ Vector -> Pixel -> Vector là một ý tưởng tồi, nếu có thể bỏ qua bước pixel nếu không bạn có thể đảm bảo 99,9% hình ảnh vector nữa ... – Peter

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