Как Перевести на и / или Система координат работает в формах Xamarin - PullRequest
0 голосов
/ 19 февраля 2020

При нажатии на изображение появляется раскрывающееся окно, и пользователь может щелкнуть один из множества вариантов размещения изображения. Однако второе изображение кажется выключенным примерно на 35, а третье изображение кажется примерно на 70 ниже. Я использую Image.TranslateTo. Как работает система координат в формах Xamarin и существует ли лучший способ поместить изображения в определенное c место в системе координат?

1 Ответ

0 голосов
/ 20 февраля 2020

О Метод перевода , в нем три параметра.

image.TranslateTo (TranslationX, TranslationY, millisecond);
  • TranslationX: получает или задает дельту X перевода элемента .
  • TranslationY: получает или задает дельту перевода Y элемента.
  • миллисекунда: сколько времени нужно, чтобы завершить sh анимацию (миллисекунды).

Это означает, что параметры TranslationX и TranslationY просто указывают Смещение из View, а не coordinate.

Если у меня есть код xaml, как указано ниже:

<Image Source="icon.png" BackgroundColor="Accent" HorizontalOptions="Center" VerticalOptions="Center">
    <Image.GestureRecognizers>
        <TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped" NumberOfTapsRequired="1"/>
    </Image.GestureRecognizers>
</Image>
<Image x:Name="imageone" Source="imageone.png" BackgroundColor="Aqua" HorizontalOptions="Center" WidthRequest="50" HeightRequest="50"/>
<Image x:Name="imagetwo" Source="imagetwo.png" BackgroundColor="Beige" HeightRequest="50" />
<Image x:Name="imagethree" Source="imagethree.png" BackgroundColor="BurlyWood" HeightRequest="50" />

На экране отображается: (Для лучшего объяснения я установил HeightRequest и BackgroundColor для Image.)

enter image description here

Вы увидите сверху код, height из imageone/imagetwo/imagethree все равно 50. И я получу X из imageone первым после запуска. Это 180. Затем я напишу код для TapGestureRecognizer_Tapped метода следующим образом, чтобы перевести imageone и imagetwo.

private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
{
    Console.WriteLine("Tap" + imageone.X +"---"+ imageone.Y);
    imageone.TranslateTo(-180, 0, 1000);
    imagetwo.TranslateTo(0, 100, 1000);
}

Эффект следующим образом:

enter image description here

И напечатанные журналы Console:

14:34:36.621 I/mono-stdout( 4499): Tap180---290.714285714286
14:34:41.171 I/mono-stdout( 4499): Tap180---290.714285714286

Тогда вы обнаружите, что есть два вывода:

Первый , TranslationX и TranslationY просто указывают Offset из View.

Второй , метод перевода не изменит coordinate из View.

...