feat: further simplify pure rectangle.
This commit is contained in:
@@ -77,7 +77,7 @@ public partial class OverlayDialogHost: Canvas
|
|||||||
};
|
};
|
||||||
if (modal)
|
if (modal)
|
||||||
{
|
{
|
||||||
rec[!Shape.FillProperty] = this[!OverlayMaskBrushProperty];
|
rec[!PureRectangle.BackgroundProperty] = this[!OverlayMaskBrushProperty];
|
||||||
}
|
}
|
||||||
else if(canCloseOnClick)
|
else if(canCloseOnClick)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Avalonia;
|
using Avalonia;
|
||||||
|
using Avalonia.Controls;
|
||||||
using Avalonia.Controls.Shapes;
|
using Avalonia.Controls.Shapes;
|
||||||
using Avalonia.Media;
|
using Avalonia.Media;
|
||||||
|
|
||||||
@@ -7,29 +8,23 @@ namespace Ursa.Controls.Shapes;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A rectangle, with no corner radius.
|
/// A rectangle, with no corner radius.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class PureRectangle: Shape
|
public class PureRectangle: Control
|
||||||
{
|
{
|
||||||
|
public static readonly StyledProperty<IBrush?> BackgroundProperty = AvaloniaProperty.Register<PureRectangle, IBrush?>(
|
||||||
|
nameof(Background));
|
||||||
|
|
||||||
|
public IBrush? Background
|
||||||
|
{
|
||||||
|
get => GetValue(BackgroundProperty);
|
||||||
|
set => SetValue(BackgroundProperty, value);
|
||||||
|
}
|
||||||
static PureRectangle()
|
static PureRectangle()
|
||||||
{
|
{
|
||||||
FocusableProperty.OverrideDefaultValue<PureRectangle>(false);
|
FocusableProperty.OverrideDefaultValue<PureRectangle>(false);
|
||||||
AffectsGeometry<PureRectangle>(BoundsProperty);
|
|
||||||
}
|
|
||||||
protected override Geometry? CreateDefiningGeometry()
|
|
||||||
{
|
|
||||||
StreamGeometry geometry = new StreamGeometry();
|
|
||||||
Rect rect = new Rect(this.Bounds.Size).Deflate(this.StrokeThickness / 2.0);
|
|
||||||
using StreamGeometryContext context = geometry.Open();
|
|
||||||
context.BeginFigure(new Point(rect.Left, rect.Top), true);
|
|
||||||
context.LineTo(new Point(rect.Right, rect.Top));
|
|
||||||
context.LineTo(new Point(rect.Right, rect.Bottom));
|
|
||||||
context.LineTo(new Point(rect.Left, rect.Bottom));
|
|
||||||
context.LineTo(new Point(rect.Left, rect.Top));
|
|
||||||
context.EndFigure(true);
|
|
||||||
return geometry;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Size MeasureOverride(Size availableSize)
|
public override void Render(DrawingContext context)
|
||||||
{
|
{
|
||||||
return new Size(this.StrokeThickness, this.StrokeThickness);
|
context.DrawRectangle(Background, null, new Rect(Bounds.Size));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user