2015-11-19 2 views
0

Теперь многие графические дизайнеры предоставляют изображения как xaml-файл, а не ico, png, ..., как я могу использовать файл xaml в качестве источника изображения?Графический вектор XAML в качестве источника изображения

Благодаря

+0

Можете ли вы показать пример файла xaml, а не ico, png. возможно, фото или printscreen – StepUp

ответ

0

От the MSDN

<Image> 
    <Image.Source> 
    <DrawingImage PresentationOptions:Freeze="True"> 
     <DrawingImage.Drawing> 
     <GeometryDrawing> 
      <GeometryDrawing.Geometry> 
      <GeometryGroup> 
       <EllipseGeometry Center="50,50" RadiusX="45" RadiusY="20" /> 
       <EllipseGeometry Center="50,50" RadiusX="20" RadiusY="45" /> 
      </GeometryGroup> 
      </GeometryDrawing.Geometry> 
      <GeometryDrawing.Brush> 
      <LinearGradientBrush> 
       <GradientStop Offset="0.0" Color="Blue" /> 
       <GradientStop Offset="1.0" Color="#CCCCFF" /> 
      </LinearGradientBrush> 
      </GeometryDrawing.Brush> 
      <GeometryDrawing.Pen> 
      <Pen Thickness="10" Brush="Black" /> 
      </GeometryDrawing.Pen> 
     </GeometryDrawing> 
     </DrawingImage.Drawing> 
    </DrawingImage> 
    </Image.Source> 
</Image> 

Вместо в-выстилающих GeometryDrawing вы можете обратиться к нему как статический ресурс, который вы держите в ResourceDictionary.

<Image> 
    <Image.Source> 
    <DrawingImage PresentationOptions:Freeze="True" 
        Drawing="{StaticResource myDrawing}"> 
    </Image.Source> 
</Image> 

Вы также обнаружите, что вы можете показать рисунок только один раз таким образом. Поэтому, если вы хотите, чтобы это изображение присутствовало в пользовательском интерфейсе в нескольких местах, поместите изображение в шаблон управления и настройте элементы управления с помощью шаблона.

+0

Спасибо тоже, этот подход, который я знаю, мой вопрос был в том, что происходит, когда у меня есть 100 графических файлов xaml, предоставляемых дизайнером, теперь мне нужно извлечь содержимое из каждого файла, чтобы перейти в словарь ресурсов и установить ключ для каждого. Я прошу только, если проще, как время. –

+0

@ToaderIoan - вы должны были упомянуть об этом в вопросе. Все зависит от того, как вы хотите сохранить чертежи. Вы можете написать простой сценарий powershell, который читает все файлы xaml в словаре и объединяет их в один файл словаря большого ресурса с каждым изображением, связанным с именем файла. –

0

Спасибо тоже, этот подход, которого я знаю, мой вопрос был в том, что происходит, когда у меня есть 100 графических файлов xaml, предоставляемых дизайнером, теперь мне нужно извлечь содержимое из каждого файла, чтобы перейти в словарь ресурсов и установить ключ для каждого. Я прошу только, если проще, как время.

+0

Это не ответ на исходный вопрос. –

0

Еще раз спасибо.

Я получил графики, как этот

<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Width="128" Height="128"> 
 
    <Canvas Width="10240" Height="10240"> 
 
\t <Path Data="M5986 6814l828 -828c124,-124 328,-124 452,0l2428 2428c124,124 124,328 0,452l-828 828c-124,124 -328,124 -452,0l-2428 -2428c-124,-124 -124,-328 0,-452z" Fill="#EDC87E"/> 
 
\t <Path Data="M6082 5442l412 412 -640 640 -412 -412c-534,401 -1197,638 -1916,638 -1764,0 -3194,-1430 -3194,-3194 0,-1764 1430,-3194 3194,-3194 1764,0 3194,1430 3194,3194 0,719 -237,1382 -638,1916zm-2556 -4471c-1411,0 -2555,1144 -2555,2555 0,1411 1144,2555 2555,2555 1411,0 2555,-1144 2555,-2555 0,-1411 -1144,-2555 -2555,-2555z" Fill="#808080"/> 
 
    </Canvas> 
 
</Viewbox>

Это может быть удобным для пользователя очень легко, как содержание на контроль содержания, но Youse это для управления, который требует источника изображения я не могу Я должен преобразовать в:

<DrawingImage> 
      <DrawingImage.Drawing> 
       <DrawingGroup> 
        <DrawingGroup.Children> 
         <GeometryDrawing Geometry="M5986 6814l828 -828c124,-124 328,-124 452,0l2428 2428c124,124 124,328 0,452l-828 828c-124,124 -328,124 -452,0l-2428 -2428c-124,-124 -124,-328 0,-452z" Brush="#EDC87E"> 
          <GeometryDrawing.Pen> 
           <Pen Thickness="1000" Brush="Blue"></Pen> 
          </GeometryDrawing.Pen> 
         </GeometryDrawing> 
         <GeometryDrawing Geometry="M6082 5442l412 412 -640 640 -412 -412c-534,401 -1197,638 -1916,638 -1764,0 -3194,-1430 -3194,-3194 0,-1764 1430,-3194 3194,-3194 1764,0 3194,1430 3194,3194 0,719 -237,1382 -638,1916zm-2556 -4471c-1411,0 -2555,1144 -2555,2555 0,1411 1144,2555 2555,2555 1411,0 2555,-1144 2555,-2555 0,-1411 -1144,-2555 -2555,-2555z" Brush="#808080"/> 
        </DrawingGroup.Children> 
       </DrawingGroup> 
      </DrawingImage.Drawing> 
     </DrawingImage> 

работа в тривиальной :(