2009-09-22 34 views
8

Tôi có một số đường dẫn được xác định rằng tôi muốn chuyển đổi thành tài nguyên DrawingImage nhưng tôi phải thiếu một cái gì đó.Làm thế nào để sử dụng Path trong một DrawingImage?

ví dụ:

Tôi muốn đi một cái gì đó như thế này:

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

và sử dụng nó với một cái gì đó như thế này:

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

Bất kỳ lời đề nghị?

-dk

+0

Tôi có cùng loại sự cố khi sử dụng dữ liệu từ tệp XPS được xuất từ ​​Inkscape. – jpierson

+0

Xấu hổ rằng có hai cách để làm điều này khác nhau không tầm thường ... –

+0

Tôi sử dụng Thiết kế biểu thức để xuất ResourceDictionary với 'DrawingBrush', và tôi đổi tên thành' DrawingImage's. – marbel82

Trả lời

6

tôi khá không biết những gì bạn muốn làm ... cho bình luận của bạn cho Thomas' câu trả lời.

Tuy nhiên, Expression Thiết kế có thể xuất khẩu theo hai cách WPF khác nhau:

  1. Để một ResourceDictionary nơi tác phẩm nghệ thuật biến thành DrawingBrush (es), hoặc
  2. Để một Canvas nơi tác phẩm nghệ thuật biến thành con đường (s) và Hình dạng.

Phương pháp ResourceDictionary/DrawingBrush rất giống với câu trả lời được đề xuất mà bạn đưa ra trong câu hỏi và Thomas đã trả lời.

Điều tôi đề nghị là thiết kế tác phẩm nghệ thuật của bạn với thiết kế biểu thức và sau đó giữ tập tin .design để bạn có thể xuất sang bất kỳ định dạng nào bạn muốn ... đặc biệt là vào một thời điểm sau đó.

Bây giờ, tôi biết rất nhiều tác phẩm nghệ thuật được thực hiện trong Adobe Illustrator và sau đó được chuyển đổi bằng cách sử dụng thiết kế biểu thức. Nếu đúng như vậy, tôi sẽ giữ cả tệp .ai và tệp .design để bạn luôn có thể sửa đổi ảnh nghệ thuật và xuất lại.

Tất nhiên, đây là tất cả để giải quyết vấn đề bạn không thể nhập xaml vào thiết kế biểu thức (nghĩa là nó không hỗ trợ kịch bản chuyến đi khứ hồi). Một điều tôi sẽ đề cập đến là đôi khi nó không phải là dễ dàng như chỉ cần sao chép ngôn ngữ mini-path từ tài sản Path.Data đến tài sản GeometryDrawing.Geometry ... vì các kịch bản thay đổi kích thước (có nghĩa là DrawingBrush (es) thường được thiết lập để điền vào một nơi nào đó và sau đó họ thường điền vào bất cứ không gian có). Vì vậy, xem ra cho điều đó!

6

này nên làm việc:

<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

Tôi không muốn dịch đường dẫn vào tương đương hình học theo cách thủ công. Lý do cho tất cả điều này là tôi có một số nghệ thuật xaml đã được tạo ra với Blend và nó render đường dẫn bằng cách sử dụng đường dẫn xaml viết tắt. Tôi nhận thấy rằng thiết kế biểu thức sử dụng cùng một cú pháp đường dẫn ngắn trừ khi bạn xuất, sau đó nó sử dụng cú pháp giống như trong ví dụ của bạn. –

+0

Tôi không nghĩ rằng có một cách khác để làm điều đó trong XAML nếu bạn muốn đặt nó trong một DrawingImage ... Bạn có thể có thể làm điều đó trong code-behind tuy nhiên –

+0

Đây là cách tôi sẽ làm điều đó.Tôi nghĩ chúng ta đang thiếu một số thông tin ở đây. – cplotts

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