feat: add clock template.

This commit is contained in:
rabbitism
2024-04-21 22:58:31 +08:00
parent 14d3958873
commit 3815a5114c
5 changed files with 68 additions and 7 deletions

View File

@@ -35,5 +35,38 @@ public class Clock: TemplatedControl
get => GetValue(ShowMinuteTicksProperty);
set => SetValue(ShowMinuteTicksProperty, value);
}
public static readonly StyledProperty<double> HourHandMarginProperty = AvaloniaProperty.Register<Clock, double>(
nameof(HourHandMargin));
public double HourHandMargin
{
get => GetValue(HourHandMarginProperty);
set => SetValue(HourHandMarginProperty, value);
}
public static readonly StyledProperty<double> MinuteHandMarginProperty = AvaloniaProperty.Register<Clock, double>(
nameof(MinuteHandMargin));
public double MinuteHandMargin
{
get => GetValue(MinuteHandMarginProperty);
set => SetValue(MinuteHandMarginProperty, value);
}
protected override Size MeasureOverride(Size availableSize)
{
double min = Math.Min(availableSize.Height, availableSize.Width);
var newSize = new Size(min, min);
var size = base.MeasureOverride(newSize);
return size;
}
protected override Size ArrangeOverride(Size finalSize)
{
double min = Math.Min(finalSize.Height, finalSize.Width);
var newSize = new Size(min, min);
var size = base.ArrangeOverride(newSize);
return size;
}
}

View File

@@ -86,6 +86,18 @@ public class ClockTicks: Control
AffectsRender<ClockTicks>(ShowHourTicksProperty);
}
protected override Size MeasureOverride(Size availableSize)
{
double minSize= Math.Min(availableSize.Width, availableSize.Height);
return new Size(minSize, minSize);
}
protected override Size ArrangeOverride(Size finalSize)
{
var minSize = Math.Min(finalSize.Width, finalSize.Height);
return new Size(minSize, minSize);
}
public override void Render(DrawingContext context)
{
base.Render(context);