2017-04-09 40 views
4

由於創建者更新出來,uwp可以使用簡單解釋的here (minute 3)的svg圖像。如何在uwp的xaml中擴展/調整svgs?

我有this svg(48×48)和i可以精細使用它,如果(且僅當)1設置圖像的寬度&高度48和STRECH爲無:

<Image Source="ms-appx:///Assets//check.svg" Height="48" Width="48" Stretch="None"/>

如果設置要填充的範圍,圖像消失。如果我增加寬度和高度,我可以看到圖標固定在圖像的左上角()。是不是拉伸=填充和固定的高度/寬度縮放圖像的預期方式?

它看起來像我的拉伸算法沒有把握我的svg應該是48x48。我做錯了,還是有解決方法嗎?

+0

我以爲Image.Source需要[BitmapImage class](https://docs.microsoft.com/en-us/uwp/ api/windows.ui.xaml.media.imaging.bitmapimage),所以我會假設它將SVG渲染爲柵格位圖,這意味着您可能需要將'Image'包裝到[ViewBox](https:/ /docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.viewbox)或個人我只會使用XAML路徑標記這是SIM卡ilar到SVG,您可以從Adobe Illustrator導出爲該格式。我沒有聽說過SVG的支持,甚至在文檔中也沒有,但如果得到全面支持,那將會很酷。 –

回答

2

我一直有同樣的問題,整個上午,正要完全放棄對SVG的支持,似乎是瘋了,你不能得到一個可擴展的格式,比例適當,...

但是,我有還有一個去,我想我已經完成了。

您似乎需要告訴SvgImageSource以SVG的原始設計尺寸進行光柵化,然後讓Image對其進行縮放。不知道這是一個特別有用的辦法,但肯定解決了它作爲構建15063.

<Image Width="24" Stretch="Uniform" VerticalAlignment="Center"> 
    <Image.Source> 
    <SvgImageSource UriSource="ms-appx:///Assets/salesorder.folder.plain.svg" 
        RasterizePixelHeight="48" 
        RasterizePixelWidth="48" /> 
    </Image.Source> 
</Image> 

因此,如果SVG是48×48,我們用RasterizePixelHeightRasterizePixelWidth值,然後將圖像尺度把它變成一個位圖,在48x48的那到24x24。

希望有所幫助。

更新 我只是重讀你的問題,並意識到你正在尋找增加規模,而我一直在努力減少它。看起來好像該技術仍然有效,但隨着放大,由於位圖縮放過程,您將失去圖像的清晰度。我認爲這表明了目前實施的一個根本性缺陷。他們似乎將svg渲染爲位圖,我們必須告訴它原始尺寸才能正確渲染,然後允許位圖代碼完成剩下的工作。

我認爲這是真正的支持還是一個奇怪的中途房子是有些可辯論的。某處有人建議Adobe Illustrator可以生成XAML路徑,我想我會看看是否可以獲得更好的質量輸出,儘管因爲我非常喜歡Inkscape :-(

0

對我而言它有用僅當您將RasterizePixelHeightRasterizePixelWidth設置爲svg原始分辨率(例如,Inkscape中的文檔屬性)時。