拉伸路径以填充容器
Stretch Path to fill container
我有这样定义的资源:
<Canvas x:Key="export"
Width="48"
Height="48">
<Path Fill="{DynamicResource CurrentColor}"
Data="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" />
</Canvas>
我是这样使用它的:
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Margin="10,5,10,10"
Width="Auto"
Height="Auto">
<Button.Template>
<ControlTemplate TargetType="Button">
<Rectangle Width="48"
Height="48"
Fill="{DynamicResource CurrentColor}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill"
Visual="{Binding}" />
</Rectangle.OpacityMask>
</Rectangle>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
可以看出,我正在尝试将矩形大小设置为 48x48,但资源中的路径数据坐标被定义为将其绘制为 24x24。无论我尝试什么,我都无法拉伸资源来填充按钮。如何做呢?
如果需要,我愿意更改按钮实现。我所需要的只是能够以某种颜色显示按钮中的图标。
尝试使用 HorizontalAlignment="Stretch"
和 VerticalAlignment="Stretch"
但是如果设置了 Width
和 Height
,它们将优先于 Stretch
设置。参见 Microsoft on HorizontalAlignment。
删除 canvas 并在 Path
上使用 Stretch="Uniform"
。如果要减少 Path
的 height/width,请将其添加到例如。 Grid
或仅设置 Path
的 Width
和 Height
:
<Grid Width="48" Height="48">
<Path Fill="{DynamicResource CurrentColor}"
Stretch="Uniform"
Data="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" />
</Grid>
我有这样定义的资源:
<Canvas x:Key="export"
Width="48"
Height="48">
<Path Fill="{DynamicResource CurrentColor}"
Data="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" />
</Canvas>
我是这样使用它的:
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Margin="10,5,10,10"
Width="Auto"
Height="Auto">
<Button.Template>
<ControlTemplate TargetType="Button">
<Rectangle Width="48"
Height="48"
Fill="{DynamicResource CurrentColor}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill"
Visual="{Binding}" />
</Rectangle.OpacityMask>
</Rectangle>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
可以看出,我正在尝试将矩形大小设置为 48x48,但资源中的路径数据坐标被定义为将其绘制为 24x24。无论我尝试什么,我都无法拉伸资源来填充按钮。如何做呢?
如果需要,我愿意更改按钮实现。我所需要的只是能够以某种颜色显示按钮中的图标。
尝试使用 HorizontalAlignment="Stretch"
和 VerticalAlignment="Stretch"
但是如果设置了 Width
和 Height
,它们将优先于 Stretch
设置。参见 Microsoft on HorizontalAlignment。
删除 canvas 并在 Path
上使用 Stretch="Uniform"
。如果要减少 Path
的 height/width,请将其添加到例如。 Grid
或仅设置 Path
的 Width
和 Height
:
<Grid Width="48" Height="48">
<Path Fill="{DynamicResource CurrentColor}"
Stretch="Uniform"
Data="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" />
</Grid>