У меня есть пользовательский фрейм, созданный в Xamarin.Forms, который позволяет создавать градиентный фон. Я пытаюсь создать составную фигуру из двух разных фреймов, имеющих градиентный фон, но я хочу, чтобы градиент распределялся между ними. Я получил желаемый эффект с помощью Skia.Sharp.Forms, но я хотел бы знать, есть ли способ сделать это с помощью только Xamarin.Forms и пользовательских средств визуализации.
Пример того, что я ищу для:
Пример того, что я получаю при использовании двух пользовательских рамок: (не обращайте внимания на слегка отличающуюся форму)
РЕДАКТИРОВАТЬ
Моя идея заключается в том, что я хочу инкапсулировать два кадра (или любые элементы управления по этому вопросу) в Пользовательская сетка с заданными цветами градиента. Затем в пользовательском рендере Grid устанавливает фоны дочерних элементов управления на градиент. Таким образом, LinearGradient
имеет начальную точку (0,0) родительской сетки и не создает новый градиент для каждого дочернего элемента. Вот некоторый код, чтобы объяснить, что я имею в виду, я просто еще не выяснил, в какой части я устанавливаю фоны для детей с градиентом, SetLayerPaint
(метод, похоже, не работает ..)
protected override void DispatchDraw(Canvas canvas)
{
_gradient = new Android.Graphics.LinearGradient(
0, 0, Width, Height,
new int[] { _startColor.ToAndroid(), _middleColor.ToAndroid(), _endColor.ToAndroid() },
null,
Android.Graphics.Shader.TileMode.Mirror);
for(var i = 0; i < ChildCount; i++ )
{
var paint = new Android.Graphics.Paint()
{
Dither = true
};
paint.SetShader(_gradient);
var child = GetChildAt(i);
child.SetLayerPaint(paint);
}
base.DispatchDraw(canvas);
}
Кто-нибудь знает, возможно ли это?