如何解决使用 Xamarin.Forms 和 SkiaSharp,是否可以使用图像而不是颜色来描边/填充路径?
我能够渲染路径并用纯色描边/填充它:
SKPaint green = new SKPaint
{
Style = SKPaintStyle.StrokeAndFill,Color = SKColors.LimeGreen,StrokeWidth = 1,IsAntialias = true
};
canvas.Clear();
SKPath path = new SKPath();
// here I define my path
canvas.DrawPath(path,green);
但是,如果我想使用小的 PNG 作为笔触/填充的“纹理”而不是颜色,该怎么办?例如,如果我有一个绿草/草坪的小 PNG 文件,我想用这个 PNG 作为纹理填充路径?在旧的 Xamarin.iOS 世界中,这很容易做到。
这可以使用 SkiaSharp 吗?
解决方法
您基本上执行以下操作:
- 从图像文件创建一个 SKBitmap
- 从 SKBitmap 创建一个 SKShader
- 将 SKPaint 的“Shader”属性分配给 #2
示例:
// Load bitmap
string resourceID = "myImage.png";
Assembly assembly = GetType().GetTypeInfo().Assembly;
SKBitmap bitmap;
using (Stream stream = assembly.GetManifestResourceStream(resourceID))
{
bitmap = SKBitmap.Decode(stream);
}
// Create the SKShader
SKShader shader = SKShader.CreateBitmap(bitmap,SKShaderTileMode.Repeat,SKShaderTileMode.Repeat);
// Create SKPaint
SKPaint myPaint = new SKPaint
{
Style = SKPaintStyle.StrokeAndFill,Shader = shader
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。