SkiaSharp делает растровое изображение на пути кликабельным - PullRequest
0 голосов
/ 25 апреля 2020

Я нарисовал траекторию круга и для каждого угла в 1 градус добавляю растровое изображение. Теперь я хочу слушать каждый щелчок растрового изображения на этом круговом пути, используя формы Xamarin! Как я могу этого добиться. Я следовал за манипулированием касаниями на xamarin и amble, чтобы получить координаты касания, но не смог точно определить, какое растровое изображение выбрано?

РЕДАКТИРОВАТЬ:

 foreach (var item in bitmapPoints)
  {
    using (Stream streami = assembly.GetManifestResourceStream(resID))
    {
      redBitmap = SKBitmap.Decode(streami);
    }
      canvas.DrawBitmap(redBitmap,item, null);
  }

Сейчас я пытаюсь включить событие щелчка для каждого растрового изображения, нарисованного на холсте. Должен ли я сделать собственный класс BitMap с методом HiTest? если да, то какие Rect x и y должны быть переданы для получения HiTest?

1 Ответ

0 голосов
/ 25 апреля 2020

это называется "Тестирование попадания" - у Xamarin есть образец в их документации SkiaSharp

public bool HitTest(SKPoint location)
{
    // Invert the matrix
    SKMatrix inverseMatrix;

    if (Matrix.TryInvert(out inverseMatrix))
    {
        // Transform the point using the inverted matrix
        SKPoint transformedPoint = inverseMatrix.MapPoint(location);

        // Check if it's in the untransformed bitmap rectangle
        SKRect rect = new SKRect(0, 0, bitmap.Width, bitmap.Height);
        return rect.Contains(transformedPoint);
    }
    return false;
}
...