我正在开发一个 Xamarin.Forms 项目并利用 SkiaSharp 进行位图操作。我有一个代码片段,可以直接操作从 ImageButton 源获取的 SKBitmap,并且它按预期工作:
canvas.DrawBitmap(SKBitmap.Decode(picturebox.Source.ToString()), new SKRect((float)lastMousePosition.X - pixell, (float)lastMousePosition.Y - pixell, (float)lastMousePosition.X - pixell + pixell * 2, (float)lastMousePosition.Y - pixell + pixell * 2), new SKRect((float)lastMousePosition.X - pixel, (float)lastMousePosition.Y - pixel, (float)lastMousePosition.X - pixel + pixel * 2, (float)lastMousePosition.Y - pixel + pixel * 2), paint);
但是,当我尝试使用方法(aaaa)进行类似的操作来处理从 StackLayout 中的 ImageButton 获取的 SKBitmap 时,它不会产生预期的结果:
((StackLayout)scrol.Content).Children[b] = aaaa(SKBitmap.Decode(((ImageButton)((StackLayout)scrol.Content).Children[b]).Source), opacity, (int)e.TotalX - int.Parse(ll3[0]), (int)e.TotalY - int.Parse(ll3[1]), size);
这里是aaaa方法:
private SKBitmap aaaa(SKBitmap inputImage, float strength, int brushSize, int brushLocation, int radius)
{
}
我已经确认aaaa方法正确接收了SKBitmap,但结果却出乎意料。您能帮我了解可能导致这种差异的原因吗?任何见解或建议将不胜感激。
谢谢!
我发现我需要先分配它而不是不断地使用它。