У меня проблема. Я новичок в пакете SkiaSharp, поэтому я борюсь со следующей проблемой: я создал TriangleGrid со SkiaSharp, используя следующий код:
private void OnPaintSurface(object sender, SKPaintSurfaceEventArgs e)
{
// the the canvas and properties
var canvas = e.Surface.Canvas;
// get the screen density for scaling
var scale = Resources.DisplayMetrics.Density;
var scaledSize = new SKSize(e.Info.Width / scale, e.Info.Height / scale);
// handle the device screen density
canvas.Scale(scale);
SKPaint strokePaint = new SKPaint
{
Style = SKPaintStyle.Stroke,
Color = SKColors.White,
StrokeWidth = 3,
IsAntialias = true,
};
int TrianglesVisiblePerRow = 4;
int TrianglesPerRow = 6;
int TriangleCountOnRow = 0;
int RowCountOnScreen = 0;
float TriangleWidth = scaledSize.Width / TrianglesVisiblePerRow;
float TriangleRowHeight = (float)Math.Sqrt(Math.Pow(TriangleWidth, 2) - (Math.Pow((scaledSize.Width / (TrianglesVisiblePerRow * 2)), 2)));
float X_Start_Cooridnate = -TriangleWidth;
float Y_Start_Cooridnate = 0;
while (Y_Start_Cooridnate < scaledSize.Height)
{
while (TriangleCountOnRow < TrianglesPerRow)
{
// Create the path
path = new SKPath();
path.MoveTo(X_Start_Cooridnate, Y_Start_Cooridnate);
path.LineTo(X_Start_Cooridnate + TriangleWidth, (TriangleRowHeight * RowCountOnScreen));
if (RowCountOnScreen % 2 != 0)
{
path.LineTo(-(TriangleWidth / 2) + (scaledSize.Width / (TrianglesVisiblePerRow * 2)) + (TriangleWidth * TriangleCountOnRow), (TriangleRowHeight * (RowCountOnScreen + 1)));
}
else
{
path.LineTo(-TriangleWidth + (scaledSize.Width / (TrianglesVisiblePerRow * 2)) + (TriangleWidth * TriangleCountOnRow), (TriangleRowHeight * (RowCountOnScreen + 1)));
}
path.LineTo(X_Start_Cooridnate, Y_Start_Cooridnate);
path.Close();
canvas.DrawPath(path, strokePaint);
TriangleCountOnRow += 1;
X_Start_Cooridnate += TriangleWidth;
}
// Create the path
path = new SKPath();
path.MoveTo(0, TriangleRowHeight);
path.LineTo(scaledSize.Width, TriangleRowHeight);
path.Close();
canvas.DrawPath(path, strokePaint);
RowCountOnScreen += 1;
if (RowCountOnScreen % 2 != 0)
{
X_Start_Cooridnate = -(TriangleWidth/2);
}
else
{
X_Start_Cooridnate = -TriangleWidth;
}
Y_Start_Cooridnate += TriangleRowHeight;
TriangleCountOnRow = 0;
}
}
Теперь я хочу закрасить треугольник, которого касались, цветом, но я не знаю, возможно ли это вообще. Поэтому мне нужен код, где вы можете коснуться треугольника или нескольких треугольников и чтобы этот конкретный треугольник приобрел другой цвет. Может ли кто-нибудь помочь мне с этим!?