Два Xamarin.Формы.Формирует линии друг над другом, верхняя линия отбрасывает «тень» (только на iOS)

#c# #xamarin.forms

Вопрос:

Я рисую фигуру X с двумя Xamarin.Forms.Shapes.Line буквами s в абсолютном виде.
На симуляторе iOS (iPhone 12 iOS 14.5) верхняя линия (та, что рисуется второй) выглядит так, как будто она отбрасывает какую-то тень на линию внизу. На Android все, кажется, работает просто отлично.

Обновить
Я создал очень простой проект, демонстрирующий эту проблему. Вы можете скачать его здесь (ссылка на GitLab).

Вот скриншоты (в одном файле) того, что вы увидите при запуске этой программы. Левый снимок экрана сделан с эмулятора Android (Pixel 2 Pie 9.0 API 28), правый снимок экрана сделан с симулятора iOS (iPhone 12 iOS 14.5). Указанный скриншот (слева Android, справа iOS).
Проблема, которую я описываю, на мой взгляд, хорошо видна даже без масштабирования. Как уже говорилось: Android работает так, как ожидалось, iOS-нет.

Конец обновления

Это выглядит так (сильно увеличено): белый крестик из двух линий, верхняя линия отбрасывает тень.

У меня есть два вопроса:

Почему это происходит?

Есть ли простой способ предотвратить это?
У линии нет никакой тени, так что я предполагаю, что это что-то другое, но я не могу найти решение или у кого-то еще есть эта проблема. Как указано выше, Android выглядит нормально.

Вот урезанная/измененная версия моего текущего кода.

Xaml

 ...
<AbsoluteLayout x:Name="MyX"
                WidthRequest="32"
                HeightRequest="32"/>
...
 

Код-за

 
        ...

        // Constructor
        public MyPage() {
            InitializeComponent();
            MyX.SizeChanged  = drawX;
        }

        private void drawX(object sender, EventArgs e) {

            var container = (AbsoluteLayout)sender;
            double width = container.Width;
            double height = container.Height;
            double offset = container.Width * 0.3;

            // X: Line property values
            PenLineCap lineCap = PenLineCap.Round;
            double strokeThickness = 2;
            SolidColorBrush brush = new SolidColorBrush(Color.White);

            // X: Top left to bottom right
            Line line1 = new Line {
                X1 = container.X   offset,
                Y1 = container.X   offset,
                X2 = container.X   width - offset,
                Y2 = container.X   height - offset,
                Stroke = brush,
                StrokeLineCap = lineCap,
                StrokeThickness = strokeThickness,
            };

            // X: Bottom left to top right
            Line line2 = new Line {
                X1 = container.X   offset,
                Y1 = container.X   height - offset,
                X2 = container.X   width - offset,
                Y2 = container.X   offset,
                Stroke = brush,
                StrokeLineCap = lineCap,
                StrokeThickness = strokeThickness
            };

            container.Children.Add(line1);
            container.Children.Add(line2);

        }
 

Комментарии:

1. Что это за offset » width и height «? Если это удобно для вас ,не могли бы вы опубликовать базовую демонстрационную версию на github или onedriver, чтобы мы могли протестировать ее на нашей стороне?

2. @JessieZhang-MSFT Я добавил больше кода, чтобы сделать пример более полным. Источник значений для offset width и height теперь включены в drawX функцию. Я, конечно, могу опубликовать демо-версию, вы бы хотели, чтобы это было полное рабочее решение, воспроизводящее проблему?

3. Я провел тест на основе вашего кода на симуляторе iOS (iPhone 12 iOS 14.5) , но не смог найти тень, о которой вы упомянули.

4. @JessieZhang-MSFT Спасибо за тестирование с вашей стороны. Я добавил ссылку на простое репо, воспроизводящее эту проблему, и проблема сохраняется. Я добавил скриншоты программы, работающей на Android и iOS. Без увеличения видно, что верхняя линия отбрасывает какую-то тень (только на iOS).

5. Спасибо за ваш ответ. Из-за различных реализаций рендеринга на платформах Android и iOS эффект будет разным. Для решения этой проблемы вы можете отправить запрос здесь: github.com/xamarin/Xamarin. Формы/вопросы .