首先,我的应用程序主要使用Xamarin Forms编写,但使用CustomRenderer作为摄像头。不确定这是否会影响任何事情。
我目前的问题是我需要将相机的纵横比从16:9改为自定义,如果可能的话。
我尝试过独立地改变宽度和高度,但是,例如,如果我要将高度更改为显着更高的高度,它所做的只是以相同的速率扩展宽度和高度,直到它碰到一边包含相机的盒子,因此它导致宽度正确,但我在代码中指定的高度远高于相机的实际高度。
var videoPreviewLayer = new AVCaptureVideoPreviewLayer(captureSession)
{
// 16 / 9 = 1.77777778
Frame = new CGRect(-15, -45, size, size * 1.77777778) /*LiveCameraStream.Bounds*/,
BackgroundColor = new CGColor(0, 255, 0) //Green
};
viewLayer.AddSublayer(videoPreviewLayer);
viewLayer.Bounds = new CGRect(4, -50, 100, 50);
viewLayer.BackgroundColor = new CGColor(255, 0, 0); //Red
//Background colours included just for dev purposes to distinguish between layers
每当我将高度设置为宽度* 1.777时...它会产生完美的16:9宽高比,遗憾的是这不是我需要的。下图显示了它当前的外观,理想情况下相机占据了所有红色区域。
所以我的问题是,如果可能的话,我该如何改变这款相机的宽高比?