Похоже, вы хотите создать снимок определенного Xamarin.Forms.View
. Вы должны обернуть 2-й Grid.Row
одним верхним уровнем View
, который будет содержать изображения как дочерние. После этого вы можете использовать возможности платформы для создания снимка.
Android
public void MakeViewShot(Xamarin.Forms.View view)
{
var nativeView = view.GetRenderer().View;
var wasDrawingCacheEnabled = nativeView.DrawingCacheEnabled;
nativeView.DrawingCacheEnabled = true;
nativeView.BuildDrawingCache(false);
var bitmap = nativeView.GetDrawingCache(false);
// TODO: Save bitmap and return filepath
nativeView.DrawingCacheEnabled = wasDrawingCacheEnabled;
}
IOS
public void MakeViewShot(Xamarin.Forms.View view)
{
var nativeView = Xamarin.Forms.Platform.iOS.Platform.GetRenderer(view).NativeView;
UIGraphics.BeginImageContextWithOptions(nativeView.Bounds.Size, opaque: true, scale: 0);
nativeView.DrawViewHierarchy(nativeView.Bounds, afterScreenUpdates: true);
var image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
// TODO: Save bitmap and return filepath
}
Пример использования:
<StackLayout
x:Name="secondRow"
Grid.Row="1">
<Image x:Name="image1" />
<Image x:Name="image2" />
<Image x:Name="image3" />
</StackLayout>
MakeViewShot(secondRow);