C# 将布局保存到位图(Xamarin)
我有布局,需要保存到位图 这是代码C# 将布局保存到位图(Xamarin),c#,android,xamarin,bitmap,xamarin.android,C#,Android,Xamarin,Bitmap,Xamarin.android,我有布局,需要保存到位图 这是代码 public void Save() { LinearLayout view = FindViewById<LinearLayout>(Resource.Id.badge); view.DrawingCacheEnabled = true; view.BuildDrawingCache(); Bitmap layout = view.GetDrawingCache(true); } 一切正常,位图2正在返回 但
public void Save()
{
LinearLayout view = FindViewById<LinearLayout>(Resource.Id.badge);
view.DrawingCacheEnabled = true;
view.BuildDrawingCache();
Bitmap layout = view.GetDrawingCache(true);
}
一切正常,位图2正在返回
但我还需要将其保存到SD
我是这样写的
public Bitmap CreateBitmapFromView(View view, bool autoScale = true)
{
var wasDrawingCacheEnabled = view.DrawingCacheEnabled;
view.DrawingCacheEnabled = true;
view.BuildDrawingCache(autoScale);
var bitmap2 = view.GetDrawingCache(autoScale);
view.DrawingCacheEnabled = wasDrawingCacheEnabled;
return bitmap2;
}
public Bitmap CreateBitmapFromView(View view, bool autoScale = true)
{
var wasDrawingCacheEnabled = view.DrawingCacheEnabled;
view.DrawingCacheEnabled = true;
view.BuildDrawingCache(autoScale);
var bitmap2 = view.GetDrawingCache(autoScale);
view.DrawingCacheEnabled = wasDrawingCacheEnabled;
var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
var filePath = System.IO.Path.Combine(sdCardPath, "test.png");
var stream = new FileStream(filePath, FileMode.Create);
bitmap2.Compress(Bitmap.CompressFormat.Png, 100, stream);
return bitmap2;
}
并且有这个错误
对象引用未设置为对象的实例
将其更改为以下内容:
public Bitmap CreateBitmapFromView(View view, bool autoScale = true)
{
var wasDrawingCacheEnabled = view.DrawingCacheEnabled;
view.DrawingCacheEnabled = true;
view.BuildDrawingCache(autoScale);
var bitmap = view.GetDrawingCache(autoScale);
view.DrawingCacheEnabled = wasDrawingCacheEnabled;
return bitmap;
}
更新
尝试将var bitmap2
定义为全局变量
public Bitmap CreateBitmapFromView(View view, bool autoScale = true)
{
var wasDrawingCacheEnabled = view.DrawingCacheEnabled;
view.DrawingCacheEnabled = true;
view.BuildDrawingCache(autoScale);
view.DrawingCacheEnabled = wasDrawingCacheEnabled;
var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
var filePath = System.IO.Path.Combine(sdCardPath, "test.png");
var stream = new FileStream(filePath, FileMode.Create);
bitmap2.Compress(Bitmap.CompressFormat.Png, 100, stream);
return bitmap2;
}
以及程序如何理解需要保存为btmap的布局?
public Bitmap CreateBitmapFromView(View-View,bool autoScale=true)
您可以在该方法中传递视图参数,因此我在方法中的视图将显示此LinearLayout-View=FindViewById(Resource.Id.badge)代码>我将传递线性布局?您可以将该视图传递给我在答案中编写的方法好的,我理解。还有一个问题,我需要将位图保存到SD我有代码var sdCardPath=Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;var filePath=System.IO.Path.Combine(sdCardPath,“test.png”);var stream=newfilestream(filePath,FileMode.Create);bitmap2.Compress(Bitmap.CompressFormat.Png,100,流);stream.Close()代码>如何从您的方法保存位图?