Sam*_*tar 5 xamarin xamarin.forms
luberda-molinet/FFImageLoading 中的代码在大多数情况下对我来说效果很好,但我发现有时我的图像无法在 iOS 上正确加载。可能这也是 Android 上的一个问题,但我还没有研究过这个问题。下面是一个例子:
标题图标和语言图标背后的代码是相同的。要解决这个问题,我需要关闭应用程序并再次打开它,标题图标将正确显示,但另一个图标可能没有正确的高度。这是图标背后的代码:
<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>
Run Code Online (Sandbox Code Playgroud)
您可以在运行时使用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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
该代码未经过测试,因此您可能需要检查。让我知道这是否有帮助!
归档时间: |
|
查看次数: |
444 次 |
最近记录: |