Как использовать Path в DrawingImage? - PullRequest
       28

Как использовать Path в DrawingImage?

8 голосов
/ 22 сентября 2009

У меня есть несколько определенных путей, которые я хотел бы преобразовать в ресурсы DrawingImage, но я должен что-то упустить.

т.е.

Я хочу взять что-то вроде этого:

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

и используйте его с чем-то вроде этого:

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

Есть предложения?

-dk

Ответы [ 2 ]

6 голосов
/ 23 сентября 2009

Я совершенно не знаю, что вы хотите сделать ... учитывая ваш комментарий к ответу Томаса.

Однако Expression Design может экспортировать двумя разными способами WPF:

  1. В ResourceDictionary, где обложка превращается в DrawingBrush (s) или
  2. На холст, где произведение искусства превращается в Путь (и) и Форму (ы).

Подход ResourceDictionary / DrawingBrush очень похож на предложенный вами ответ на вопрос, на который Томас ответил.

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

Теперь я знаю, что в Adobe Illustrator выполняется много иллюстраций, а затем конвертируется с помощью Expression Design. В таком случае я бы сохранил как файл .ai, так и файл .design, чтобы вы всегда могли изменить свою иллюстрацию и снова выполнить экспорт.

Конечно, это все, чтобы обойти проблему, из-за которой вы не можете импортировать xaml в Expression Design (т.е. он не поддерживает сценарий туда-обратно).

Одна вещь, которую я хотел бы упомянуть, это то, что иногда это не так просто, как просто скопировать язык мини-пути из свойства Path.Data в свойство GeometryDrawing.Geometry ... из-за изменения размеров сценариев (то есть, что DrawingBrush (es ), как правило, устанавливаются где-то как Fill, а затем они обычно заполняют все, что есть). Так что следите за этим!

6 голосов
/ 22 сентября 2009

Это должно работать:

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