【发布时间】:2018-09-06 21:09:33
【问题描述】:
所以我正在制作一个 Xamarin.Forms 应用程序。我有一个 StackLayout,我正在拍摄快照(只有元素,而不是整个屏幕。)
这是界面:
public interface IViewSnapShot
{
Task<byte[]> CaptureAsync(Xamarin.Forms.View view);
}
这是事件:
private async Task SavePic_ClickedAsync(object sender, EventArgs e)
{
var imageByte = await DependencyService.Get<IViewSnapShot>().CaptureAsync(BlueprintSnapshot);
}
这是特定于 Android 平台的:
public class MakeViewSnapshot : IViewSnapShot
{
Task<byte[]> IViewSnapShot.CaptureAsync(Xamarin.Forms.View view)
{
var nativeView = view.GetRenderer().View;
var wasDrawingCacheEnabled = nativeView.DrawingCacheEnabled;
nativeView.DrawingCacheEnabled = true;
nativeView.BuildDrawingCache(false);
Bitmap bitmap = nativeView.GetDrawingCache(false);
// TODO: Save bitmap and return filepath
nativeView.DrawingCacheEnabled = wasDrawingCacheEnabled;
byte[] bitmapData;
using (var stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
bitmapData = stream.ToArray();
}
return bitmapData;
}
}
问题是bitmapData报错
无法将类型“byte[]”隐式转换为“System.Threading.Tasks.Task”
我有搜索互联网,每个帖子都说这是将位图转换为字节 [] 数组的方法。知道如何解决此错误吗?
稍后我想将 byte[] 数组上传到 web api。
【问题讨论】:
-
你要么需要放弃你的任务返回签名,要么将方法包装在一个任务中
-
为什么它被标记为异步但你返回一个字节[]?这就是问题所在,您应该返回一个任务,或者删除异步任务并只返回数据
标签: c# xamarin xamarin.forms bitmap xamarin.android