using SkiaSharp;
using Svg.Skia;
// .....
byte[] pngData;
int width = 50;
int height = 50;
string svgString = "........" // using https://api.iconify.design/fluent-emoji-flat/alarm-clock.svg as an example
using (var svg = new SKSvg())
{
using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(svgString)))
{
svg.Load(stream);
}
var picture = svg.Picture;
if (picture != null)
{
using (var bitmap = new SKBitmap(width, height))
using (var canvas = new SKCanvas(bitmap))
{
canvas.Clear(SKColors.White);
// Scale to fit
var scaleX = (float)width / picture.CullRect.Width;
var scaleY = (float)height / picture.CullRect.Height;
var scale = Math.Min(scaleX, scaleY);
if (scale > 0)
canvas.Scale(scale);
canvas.Clear(SKColors.Green);
canvas.DrawPicture(picture);
canvas.Flush();
canvas.Save();
using (var image = SKImage.FromBitmap(bitmap))
using (var pngEncodedData = image.Encode(SKEncodedImageFormat.Png, 100))
{
pngData = pngEncodedData.ToArray();
}
}
}
else
{
throw new ArgumentException("Failed to load SVG.");
}
}
// Save the intermediate PNG as "icon-preview.png"
using (var fileStream = File.OpenWrite("icon-preview.png"))
{
fileStream.Write(pngData, 0, pngData.Length);
}
< /code>
Bearbeiten: Das Beispiel svg, das ich für meinen Test verwende: < /p>
Ich versuche, einen SVG umzuwandeln.[code]using SkiaSharp; using Svg.Skia;
// .....
byte[] pngData; int width = 50; int height = 50; string svgString = "........" // using https://api.iconify.design/fluent-emoji-flat/alarm-clock.svg as an example
using (var svg = new SKSvg()) { using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(svgString))) { svg.Load(stream); }
var picture = svg.Picture;
if (picture != null) { using (var bitmap = new SKBitmap(width, height)) using (var canvas = new SKCanvas(bitmap)) { canvas.Clear(SKColors.White); // Scale to fit var scaleX = (float)width / picture.CullRect.Width; var scaleY = (float)height / picture.CullRect.Height; var scale = Math.Min(scaleX, scaleY);
using (var image = SKImage.FromBitmap(bitmap)) using (var pngEncodedData = image.Encode(SKEncodedImageFormat.Png, 100)) { pngData = pngEncodedData.ToArray(); } } } else { throw new ArgumentException("Failed to load SVG."); } }
// Save the intermediate PNG as "icon-preview.png" using (var fileStream = File.OpenWrite("icon-preview.png")) { fileStream.Write(pngData, 0, pngData.Length); } < /code> Bearbeiten: Das Beispiel svg, das ich für meinen Test verwende: < /p>
Mein Ziel ist es, Skiettharp -Leinwand im Fenster Silk.net zu erstellen. Es ist ein einfaches Programm, um die Rektionen der runden Grenzen zu ändern. Wenn ich meinen Code ausführe, flackert mein...
Dies ist ein Selbst Q & A von einem handlichen Code, den ich mir ausgedacht habe. Es gibt verschiedene Methoden zur Verwendung von JS SVG -Frameworks, aber sie sind übermäßig kompliziert, wenn Sie...
Dies ist ein Selbst Q & A von einem handlichen Code, den ich mir ausgedacht habe. Es gibt verschiedene Methoden zur Verwendung von JS SVG -Frameworks, aber sie sind übermäßig kompliziert, wenn Sie...