|
|
|
date: Thu, 29 Nov 2007 15:03:22 +0100,
group: microsoft.public.windows.developer.winfx.avalon
back
Re: Vector graphic image
Salut Oriane,
Oriane wrote:
> First, what does "convert into the vector XAML format" mean ? Do you
> mean that Xaml code should be yield by the utility ?
Yes. See this thread for more info:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1225491&SiteID=1
Load the image you want to convert in the corresponding tool, and try
and find a converter to XAML. The Illustrator-to-XAML converter is
supposed to be very good, but I never tried it.
> Second, once this conversion has been done, how do you link the XAML
> code with that converted vector image ? My goal is to use that image
> into for example a hierarchical template:
>
> <HierarchicalDataTemplate x:Key="tvTemplate" DataType="x:Type
> local:Element" ItemsSource="{Binding Path=SubElements}" >
> <DockPanel MouseRightButtonDown="DockPanel_MouseRightButtonDown"
> Width="Auto" >
> <Image x:Name="iconeTv" Source="{Binding Path=Icone}" />
> <TextBlock Text="{Binding Path=Name}" />
> </DockPanel>
> </HierarchicalDataTemplate>
>
> In the third line (beginning with <Image), I would like to give my
> vector image as a source. I guess I have to use C# with a
> MemoryStream... What do you think ?
No, once your image is converted to XAML, you can simply link to it. For
example, put it into a ResourceDictionary, and link to it using a
StaticResource markup extension.
Here is a super simple example:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Image Source="{StaticResource MyImage}" />
</Grid>
with (in Dictionary1.xaml)
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DrawingImage x:Key="MyImage">
<DrawingImage.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Brush="#FFFF0000"
Geometry="F1 M 110.889,144.583L 87,168L
137.222,167.833L 110.889,144.583 Z ">
<GeometryDrawing.Pen>
<Pen LineJoin="Round"
Brush="#FF000000" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</ResourceDictionary>
If you need to do this in code, you can too, but then you must use a
XamlReader to load the ResourceDictionary, then add it to the Window's
resources and then you can use the DrawingImage as if it had been added
to the XAML directly.
HTH,
Laurent
--
Laurent Bugnion [MVP ASP.NET]
Software engineering, Blog: http://www.galasoft.ch
PhotoAlbum: http://www.galasoft.ch/pictures
Support children in Calcutta: http://www.calcutta-espoir.ch
date: Fri, 30 Nov 2007 17:34:17 +0100
author: Laurent Bugnion, MVP
|
|