Преобразование SkiaSharp

Download Sample Скачайте пример

Сведения о преобразованиях для отображения графики SkiaSharp

SkiaSharp поддерживает традиционные графические преобразования, реализованные как методы SKCanvas объекта. Математически преобразования изменяют координаты и размеры, заданные в функциях рисования в SKCanvas виде графических объектов. Преобразования часто удобны для рисования повторяющихся графиков или анимации. Некоторые методы , такие как поворот растровых изображений или текста, невозможно без использования преобразований.

Преобразования SkiaSharp поддерживают следующие операции:

  • Преобразование в смену координат из одного расположения в другое
  • Масштабирование для увеличения или уменьшения координат и размеров
  • Поворот для поворота координат вокруг точки
  • Смещение координат по горизонтали или по вертикали, чтобы прямоугольник стал параллелограммой

Они называются аффинными преобразованиями. Аффинные преобразования всегда сохраняют параллельные линии и никогда не приводят к бесконечности координат или размеров. Квадрат никогда не преобразуется в что-либо, отличное от параллелограммы, и круг никогда не преобразуется в что-либо, кроме многоточия.

SkiaSharp также поддерживает неаффинные преобразования (также называемые преобразованиями проективных или перспективных ) на основе стандартной матрицы преобразования 3–3. Неаффинное преобразование позволяет преобразовывать квадрат в любую выпуклую четырехсторонняя фигура, которая является четырехсторонней фигурой со всеми углами интерьера менее 180 градусов. Неаффинные преобразования могут привести к тому, что координаты или размеры становятся бесконечными, но они жизненно важны для трехмерных эффектов.

Различия между SkiaSharp и Xamarin.Forms преобразованиями

Xamarin.Forms также поддерживает преобразования, аналогичные преобразованиям в SkiaSharp. Класс Xamarin.FormsVisualElement определяет следующие свойства преобразования:

RotationY Свойства RotationX — это преобразования перспективы, которые создают эффекты quasi-3D.

Существует несколько важных различий между преобразованиями и Xamarin.Forms преобразованиями SkiaSharp:

Первое различие заключается в том, что преобразования SkiaSharp применяются ко всему SKCanvas объекту, а Xamarin.Forms преобразования применяются к отдельным VisualElement производным. (Вы можете применить Xamarin.Forms преобразования к SKCanvasView самому объекту, так как SKCanvasView производные от VisualElementэтого SKCanvasViewпреобразования SkiaSkarp применяются.)

Преобразования SkiaSharp относятся к левому верхнему углу преобразования в то время Xamarin.Forms как преобразования относятся к левому верхнему углу SKCanvasVisualElement, к которому они применяются. Это различие важно при применении преобразований масштабирования и поворота, так как эти преобразования всегда относительно определенной точки.

Действительно большое различие заключается в том, что преобразования SKiaSharp являются методами, а Xamarin.Forms преобразования являются свойствами. Это семантическая разница за пределами синтаксического различия: преобразования SkiaSharp выполняют операцию, когда Xamarin.Forms преобразования задают состояние. Преобразования SkiaSharp применяются к последующим графическим объектам, но не к графическим объектам, которые рисуются перед применением преобразования. В отличие от этого, Xamarin.Forms преобразование применяется к ранее отрисованным элементу, как только свойство задано. Преобразования SkiaSharp являются накопительными, так как вызываются методы; Xamarin.Forms преобразования заменяются при установке свойства другим значением.

Все примеры программ в этом разделе отображаются в разделе "Преобразования SkiaSharp" программы SkiaSharpFormsDemos. Исходный код можно найти в папке "Преобразования " решения.

Преобразование переноса

Узнайте, как использовать преобразование перевода для смены графики SkiaSharp.

Преобразование масштаба

Откройте преобразование масштабирования SkiaSharp для масштабирования объектов в различные размеры.

Преобразование циклического сдвига

Изучите эффекты и анимации с помощью преобразования SkiaSharp.

Преобразование наклона

Узнайте, как преобразование смещений может создавать графический объект наклона.

Преобразования матрицы

Углубиться в преобразования SkiaSharp с помощью универсальной матрицы преобразования.

Манипуляции сенсорного ввода

Используйте преобразования матриц для реализации сенсорных манипуляций для перетаскивания, масштабирования и поворота.

Неаффинные преобразования

Перейдите за рамки oridinary с неаффинными эффектами преобразования.

Трехмерный поворот

Используйте неаффинные преобразования для поворота трехмерных объектов в трехмерном пространстве.