ViewBox
은 글꼴 크기를 일정하게 유지하는 것을 허용하지 않습니다. 나는 TextBlock
에서 Width 속성을 제거
<Grid>
<Viewbox Stretch="Uniform">
<Canvas Width="100" Height="100">
<Ellipse Width="100" Height="100" Stroke="Black"/>
</Canvas>
</Viewbox>
<TextBlock TextAlignment="Center" FontSize="12">Top Center</TextBlock>
</Grid>
주, 나는 그냥 그리드의 폭 스트레칭하자, 텍스트 정렬이 걸릴시키는 : 그런 일을 위해 당신은보기 상자 외부의 텍스트를 넣을 필요 센터링의 관심.
또는, 당신은 창의력과 ViewBox
의 ActualWidth
에 FontSize
속성을 결합하며, 예를 들어, 적절하게 조정하는 데 수 :
변환기 :
class ViewBoxConstantFontSizeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (!(value is double)) return null;
double d = (double)value;
return 100/d * 12;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
사용법 :
<Window.Resources>
...
<local:ViewBoxConstantFontSizeConverter x:Key="conv"/>
</Window.Resources>
...
<Viewbox Name="vb" Stretch="Uniform">
<Canvas Width="100" Height="100">
<Ellipse Width="100" Height="100" Stroke="Black"/>
<TextBlock Width="100" TextAlignment="Center"
FontSize="{Binding ElementName=vb,
Path=ActualWidth,
Converter={StaticResource conv}}">
Top Center
</TextBlock>
</Canvas>
</Viewbox>
감사합니다. 나는 나의 예를 너무 단순화 시켰을 것이다. 내 텍스트의 위치를 관리하기 위해 Viewbox가 필요하지만 FontSize는 아닙니다. – Hallgrim
내 대답에 대한 대안을 추가했습니다. 시도해보십시오. 조금 과장되었지만 작동 할 수도 있습니다. –
인상적입니다! 그게 효과가 있었지만 조금 더 단순하게하기를 바랬습니다. – Hallgrim