|
|
@@ -61,12 +61,26 @@ namespace Avalonia.Controls.Shapes
|
|
|
{
|
|
|
get
|
|
|
{
|
|
|
- if (_renderedGeometry == null)
|
|
|
+ if (_renderedGeometry == null && DefiningGeometry != null)
|
|
|
{
|
|
|
- if (DefiningGeometry != null)
|
|
|
+ if (_transform == Matrix.Identity)
|
|
|
+ {
|
|
|
+ _renderedGeometry = DefiningGeometry;
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
_renderedGeometry = DefiningGeometry.Clone();
|
|
|
- _renderedGeometry.Transform = new MatrixTransform(_transform);
|
|
|
+
|
|
|
+ if (_renderedGeometry.Transform == null ||
|
|
|
+ _renderedGeometry.Transform.Value == Matrix.Identity)
|
|
|
+ {
|
|
|
+ _renderedGeometry.Transform = new MatrixTransform(_transform);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _renderedGeometry.Transform = new MatrixTransform(
|
|
|
+ _renderedGeometry.Transform.Value * _transform);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -193,6 +207,7 @@ namespace Avalonia.Controls.Shapes
|
|
|
|
|
|
return finalSize;
|
|
|
}
|
|
|
+
|
|
|
private Size CalculateShapeSizeAndSetTransform(Size availableSize)
|
|
|
{
|
|
|
// This should probably use GetRenderBounds(strokeThickness) but then the calculations
|