代码之家  ›  专栏  ›  技术社区  ›  Maximus

ViewBox中的奇数文本块对齐方式

  •  0
  • Maximus  · 技术社区  · 11 年前

    我试图在ViewBox中居中放置一个数字,结果却非常令人沮丧。我已经尝试使用TextAlignment、HorizontalAlignment和VerticalAlignment等将其居中。当我使一个数字正确居中(例如,3)时,另一个数字偏离中心(例如,4):

    enter image description here

    正如你所看到的,我使用了以下内容:

        <Border x:Name="bdrMain" Background="#FF0095E2">
            <Grid>
                <Viewbox Stretch="Uniform">
                    <Ellipse x:Name="elpRing" Stroke="White" Margin="1" StrokeThickness="0.75" Width="12" Height="12"/>
                </Viewbox>
    
                <Viewbox Stretch="Uniform">
                    <TextBlock x:Name="txtValue" FontFamily="Assets/Fonts/HelveticaNeueLTStd-Th.otf#HelveticaNeueLT Std Thin" Text="3" FontWeight="Thin"/>
                </Viewbox>
            </Grid>
        </Border>
    

    有人知道为什么定心如此困难吗???

    1 回复  |  直到 11 年前
        1
  •  2
  •   XAMeLi    11 年前

    当使用ViewBox进行类似的操作时,使用大型元素并缩小视图框的大小会容易得多。此外,拥有一个放大(或缩小)一个元素大小的视图框更容易组合(在运行时也更高效)。

    试试这个:

    <Border x:Name="bdrMain"
            Background="#FF0095E2">
        <Viewbox>
            <Grid>
                <Ellipse x:Name="elpRing"
                            Stroke="White"
                            StrokeThickness="2"
                            Width="32"
                            Height="32" />
    
                <TextBlock x:Name="txtValue"
                            Margin="1,2,0,0"
                            FontFamily="Assets/Fonts/HelveticaNeueLTStd-Th.otf#HelveticaNeueLT Std Thin"
                            Text="3"
                            FontSize="32"
                            HorizontalAlignment="Center"
                            VerticalAlignment="Center" />
    
            </Grid>
        </Viewbox>
    </Border>
    

    我的机器上没有当前的字体,所以调整文本块上的边距以使其居中。你可以转到椭圆大小的64x64-将笔划厚度放大到4,将文本块的字体大小放大到64左右。