Xamarin.Forms - 如何达到45度。有角度的背景颜色

时间:2016-04-30 01:06:25

标签: xamarin background xamarin.forms

使用Xamarin.Forms,如何在不使用图像的情况下实现以下角度背景:

enter image description here

2 个答案:

答案 0 :(得分:3)

没有“自定义渲染器”的100%Xamarin.Forms涉及解决方案:

在下面的示例中,屏幕上Labels后面的半透明框的实心蓝色部分是NControl,您还可以执行渐变,简单动画等...但是在这种情况下,只在半透明矩形中绘制一个实心多边形:

enter image description here

通过NGraphics使用NControl,您可以在Xamarin.Forms中使用自定义渲染器绘制自定义控件方面做很多事情。它不是每个用例的解决方案,但它干净且可以跨平台工作(iOS / Android / WinPhone)。

var overlay = new NControlView()
{
    BackgroundColor = Xamarin.Forms.Color.Black.MultiplyAlpha(.3f),
    DrawingFunction = (canvas, rect) =>
    {
        canvas.FillPath(new PathOp[] {
            new MoveTo (NGraphics.Point.Zero),
            new LineTo ((rect.Width / 3), 0),
            new LineTo ((rect.Width / 3) * 2, rect.Height),
            new LineTo (0, rect.Height),
            new ClosePath ()
        }, Colors.Blue);
    }
};

Red中使用较重的alpha设置进行渲染,以便您更好地查看控件:

enter image description here

此控件嵌入在使用动态范围的AbsoluteLayout中,因此可以干净地处理方向更改:

AbsoluteLayout.SetLayoutFlags(overlay, AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(overlay, new Xamarin.Forms.Rectangle(0, 1, 1, 0.3));

enter image description here

答案 1 :(得分:0)

无法在Xamarin Forms中定义渐变。你最好的选择是使用图像。但是,您也可以尝试编写使用底层平台API绘制渐变背景的自定义渲染器。

以下是使用自定义渲染器方法讨论的thread