반응형
var dottedArcSize = Math.Min(info.Width, info.Height);
var dottdArcRect = new SKRect(
StrokeWidth,
StrokeWidth,
dottedArcSize - StrokeWidth,
dottedArcSize - StrokeWidth);
var dottedArcLinePaint = new SKPaint
{
Color = Color.FromHex("#FF521F").ToSKColor(),
StrokeWidth = 4.5f,
};
var dotYRatio = 0.22;
var dotLength = 0.03;
var dotEmptyArcAngle = 60;
for (var degrees = 0; degrees < 360; degrees += 10)
{
canvas.Save();
canvas.RotateDegrees(degrees, dottdArcRect.MidX, dottdArcRect.MidY);
if ((180 + dotEmptyArcAngle / 2 <= degrees && degrees < 360) ||
(0 <= degrees && degrees <= 180 - dotEmptyArcAngle / 2))
{
canvas.DrawLine(dottdArcRect.MidX, (float)(dottdArcRect.MidY * dotYRatio), dottdArcRect.MidX, (float)(dottdArcRect.MidY * (dotYRatio - dotLength)), dottedArcLinePaint);
}
canvas.Restore();
}
dotYRatio : 점선의 한 점 y 위치값 비율. 값이 낮을 수록 실선과 가까워지고, 높을 수록 실선과 멀어진다.
dotLength : 점선의 한 점의 길이.
StrokeWidth : 점선의 한 점의 너비.
10도에 한 개씩 점을 찍음.
반응형
'프로그래밍 > App 개발' 카테고리의 다른 글
[Xamarin] set alpha at hex (0) | 2021.06.16 |
---|---|
[C#, Xamarin] Call by value, deep copy (0) | 2021.06.16 |
[Xamarin] Draw Arc with SkiaSharp (0) | 2021.06.14 |
[Xamarin] custom keyboard attachable view (0) | 2021.06.09 |
[Xamarin] Lottie (xaml) (0) | 2021.05.27 |