OS をいちからインストールしなおして 10.10240 版の UWP SDK で Xamarin Logo Maker を修正し・・・
Xamarin Logo Maker – Microsoft ストアの Windows アプリ
無事 SVG 画像を前景ロゴとしてインポートできるようになりました!
主な修正箇所は下記のような感じ
if (control.IsSvg) { await control.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { control.xamlImage.Children.Clear(); var doc = SvgDocument.Parse(control.Source); control.svgImage.Content = doc; if (doc.RootElement.ViewPort.HasValue) { control.svgImage.Width = doc.RootElement.ViewPort.Value.Width; control.svgImage.Height = doc.RootElement.ViewPort.Value.Height; } }); } else { var content = XamlReader.Load(control.Source) as FrameworkElement; if (content == null) { return; } control.xamlImage.Children.Clear(); control.xamlImage.Children.Add(content); }
これはロゴを描画する UserControl のコードビハインドです
control.IsSvg が true の場合、SVG 描画モードになり、control.Source に入った SVG の xml を読み込んで描画します
svgImage は利用させていただいた Svg for Xaml Library の SvgImage です
コードビハインド上で SvgImage を生成して View に突っ込んでも描画できなかったので、初めから XAML に <SvgImage>
を <Viewbox>
の内部に埋め込んでいます
また、SvgImage の Width と Height も明示的に指定することと、UI スレッド上で操作する必要もあったようです
とにもかくにも SVG 画像が読み込めるようになったので、PowerPoint や Google ドキュメントなど多くの SVG 作成ソフト編集したベクター画像を使えるようになりました