Làm cách nào để chụp ảnh màn hình với Xamarin.iOS và lưu hình ảnh này trong UIImage.Làm cách nào để chụp ảnh màn hình của iPhone/iPad bằng Xamarin.iOS (C#)?
Tôi đã thấy một vài ví dụ về các obj-C, nhưng không có C#
Làm cách nào để chụp ảnh màn hình với Xamarin.iOS và lưu hình ảnh này trong UIImage.Làm cách nào để chụp ảnh màn hình của iPhone/iPad bằng Xamarin.iOS (C#)?
Tôi đã thấy một vài ví dụ về các obj-C, nhưng không có C#
Thậm chí tao nhã hơn:
UIScreen.MainScreen.Capture();
từ Craig Dunn's trang web:
public void ScreenCapture()
{
var documentsDirectory = Environment.GetFolderPath
(Environment.SpecialFolder.Personal);
Console.WriteLine("start capture of frame: " + this.View.Frame.Size);
UIGraphics.BeginImageContext(View.Frame.Size);
var ctx = UIGraphics.GetCurrentContext();
if (ctx != null)
{
View.Layer.RenderInContext(ctx);
UIImage img = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
// Set to display in a UIImage control _on_ the view
imageLogo.Image = img;
// Save to Photos
img.SaveToPhotosAlbum(
(sender, args)=>{Console.WriteLine("image saved to Photos");}
);
// Save to application's Documents folder
string png = Path.Combine (documentsDirectory, "Screenshot.png");
// HACK: overwrite the splash screen. iSOFlair is the application name
//string png = Path.Combine (documentsDirectory, "../iSOFlair.app/Default.png");
NSData imgData = img.AsPNG();
NSError err = null;
if (imgData.Save(png, false, out err))
{
Console.WriteLine("saved as " + png);
} else {
Console.WriteLine("NOT saved as" + png +
" because" + err.LocalizedDescription);
}
}
else
{
Console.WriteLine("ctx null - doesn't seem to happen");
}
}
Nhiều thanh lịch:
public static class UIViewExtensions {
public static UIImage AsImage(this UIView view) {
UIGraphics.BeginImageContextWithOptions(view.Bounds.Size, view.Opaque, 0);
view.Layer.RenderInContext(UIGraphics.GetCurrentContext());
UIImage img = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
return img;
}
public static UIImage TakeScreenshot() {
return UIApplication.SharedApplication.KeyWindow.AsImage();
}
}
Gọi UIViewExtensions.TakeScreenshot() để chụp ảnh màn hình toàn bộ màn hình hoặc bạn có thể gọi AsImage() cho bất kỳ chế độ xem nào để có được biểu diễn UIImage của chế độ xem. Sẽ tốt hơn nếu đặt phương thức TakeScreenshot() ở một nơi khác vì nó không phải là phần mở rộng của lớp UIView.
Awesome! Tôi không biết điều đó;) – rFlex
những gì nó trả về byte []? hoặc hình ảnh? –
UIImage: https://developer.xamarin.com/api/member/UIKit.UIScreen.Capture()/ –