@ -61,12 +61,26 @@ namespace Avalonia.Controls.Shapes
{
{
get
get
{
{
if ( _ renderedGeometry = = null )
if ( _ renderedGeometry = = null & & DefiningGeometry ! = null )
{
{
if ( DefiningGeometry ! = null )
if ( _ transform = = Matrix . Identity )
{
_ renderedGeometry = DefiningGeometry ;
}
else
{
{
_ renderedGeometry = DefiningGeometry . Clone ( ) ;
_ 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 ;
return finalSize ;
}
}
private Size CalculateShapeSizeAndSetTransform ( Size availableSize )
private Size CalculateShapeSizeAndSetTransform ( Size availableSize )
{
{
// This should probably use GetRenderBounds(strokeThickness) but then the calculations
// This should probably use GetRenderBounds(strokeThickness) but then the calculations