Вы можете использовать UIImagePickerController , чтобы сделать это.
Сначала создайте вид наложения, подобный показанному в вашем вопросе.
- Я уверен, что выможно получить эффект серого с помощью свойства Alpha .
- Вы можете создать линию, используя UIBezierPath
, когда вы закончите с оверлейным видом, затем назначьте его для CameraOverlayView свойство UIImagePickerController
Вот примерный пример.
imagePicker = new UIImagePickerController();
// set our source to the camera
imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
// set
imagePicker.MediaTypes = new string[] { "public.image" };
// show the camera controls
imagePicker.ShowsCameraControls = true;
// This is where you assign the view that you want to overlay
imagePicker.CameraOverlayView = new CameraOverlayView();
Обновление:
Используйте класс CGImageCreateWithImageInRect
для получения обрезанной версииизображения.Передайте прямоугольник наложения камеры и ссылку на изображение, снятое камерой, и этот класс вернет обрезанное изображение, которое охватывает наложение камеры.
Вот пример из Objective C, и я уверен, что вы можете сделать что-то подобное в Xamarin.iOS
CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
// or use the UIImage wherever you like
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);