gpt4 book ai didi

xamarin - 在XF中是否可以使用luberda-molinet/FFImageLoading代码替代svg图像

转载 作者:行者123 更新时间:2023-12-01 01:39:52 24 4
gpt4 key购买 nike

luberda-molinet/FFImageLoading中的代码在大多数情况下对我来说效果很好,但是我发现有时我的图像无法在iOS上正确加载。在Android上可能也是一个问题,但我尚未对此进行研究。这是一个例子:

enter image description here

标题图标和语言图标后面的代码是相同的。要解决此问题,我需要关闭应用程序,然后再次将其打开,标题图标将正确显示,但另一个图标的高度可能不正确。这是图标后面的代码:

    <Frame x:Name="SvgFrame"
Grid.Column="0"
VerticalOptions="Center"
BackgroundColor="{Binding IconBackgroundColor, Source={x:Reference this}}"
CornerRadius="5"
Padding="4" HasShadow="False">
<ffimageloadingsvg:SvgCachedImage Source="{Binding IconSource, Source={x:Reference this}}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>
</Frame>

最佳答案

您可以使用SkiaSharp在运行时从SVG文件创建镜像。

SKSvg svg = new SKSvg();
svg.Load(**Your SVG stream or file**);
using (SKBitmap bitmap = new SKBitmap((int)svg.CanvasSize.Width, (int)svg.CanvasSize.Height))
using (SKCanvas canvas = new SKCanvas(bitmap))
{
canvas.DrawPicture(svg.Picture);
canvas.Flush();
canvas.Save();

using (SKImage image = SKImage.FromBitmap(bitmap))
using (SKData data = image.Encode(SKEncodedImageFormat.Png, 80))
using (MemoryStream memStream = new MemoryStream())
{
data.SaveTo(memStream);
memStream.Seek(0, SeekOrigin.Begin);

using (SKManagedStream skStream = new SKManagedStream(memStream))
{
_bitmap?.Dispose();
_bitmap = SKBitmap.Decode(skStream);
}
}
}

该代码未经过测试,因此可能需要检查。让我知道这是否有帮助!

关于xamarin - 在XF中是否可以使用luberda-molinet/FFImageLoading代码替代svg图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59517856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com