0

我是 WPF 的新手。我的要求是制作一个圆角矩形的闪屏。我做了一些搜索并实现了圆角矩形。但问题是它在某些方面失败了。请查看屏幕截图并检查下面的代码。 在此处输入图像描述

在该图像中,您可以看到黑色边框在角落处破裂

这是我的xml

<Window x:Class="TimeLogger.StartWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"   Width="470" Height="270"      ShowInTaskbar="False" WindowStartupLocation="CenterScreen" 
        ResizeMode="NoResize"  WindowStyle="None" AllowsTransparency="True" Background="Transparent"  >
    <Border BorderBrush="#FF000000" BorderThickness="2,2,2,2" CornerRadius="8,8,8,8">
        <Grid Background="#012a7a"   >
            <Label Margin="-5,-7,5,7">
                <TextBlock Foreground="Black"  FontFamily="Segoe UI" FontSize="25" FontStretch="UltraExpanded" Height="71" Width="177">
                    TimeLogger
                </TextBlock>
            </Label>
        </Grid>
    </Border>
</Window>
4

3 回答 3

1

我看到了你的问题。

Borders 是很棒的东西。它们重量轻,对外观有很大的控制力。 问题是你给了你GridBackground颜色,而你应该把它给你的Border. 通常,网格不能很好地设置样式,尤其是当您已经在此处使用边框时。网格非常适合简单到复杂的布局,有时给它们一个有意义的,Background但它几乎总是最好只用于布局。

只需复制粘贴:

<Border BorderBrush="#FF000000" Background="#012a7a" BorderThickness="2,2,2,2" CornerRadius="8,8,8,8">
    <Grid>
        <Label Margin="-5,-7,5,7">
            <TextBlock Foreground="Black"  FontFamily="Segoe UI" FontSize="25" FontStretch="UltraExpanded" Height="71" Width="177">
                TimeLogger
            </TextBlock>
        </Label>
    </Grid>
</Border>
于 2012-10-17T19:13:26.043 回答
1

将圆角半径应用于边框不会缩小边框内容的大小,从而使其受到限制。您会在边框顶部看到 Grid 绘画,因为它仍在填充边框表示其可用的整个区域。修复相当简单:

  1. 在边框上设置背景颜色,而不是网格。保持网格透明。
  2. 对边框应用填充或对网格应用边距,以便为应用的角半径留出空间。使用确切的值,直到你得到你喜欢的东西。

像这样的东西:

<Border 
    BorderBrush="#FF000000" 
    Background="#012a7a" 
    BorderThickness="2" 
    CornerRadius="8"
    Padding="5"
    >
    <Grid>
        <!-- In a code review, I'd question the value of negative margin on this label -->
        <Label Margin="-5,-7,5,7">
            <TextBlock Foreground="Black"  FontFamily="Segoe UI" FontSize="25" FontStretch="UltraExpanded" Height="71" Width="177">
                TimeLogger
            </TextBlock>
        </Label>
    </Grid>
</Border>
于 2012-10-17T19:14:29.473 回答
0

Border 只是一个内容控件,但其中的 TextBlock

<Border Background="#012a7a" BorderBrush="#FF000000" Margin ="6" BorderThickness="4" CornerRadius="8,8,8,8">
    <TextBlock Foreground="Black" Margin="-5,-7,5,7" Height="71" Width="177"
               VerticalAlignment="Center" HorizontalAlignment="Center" 
               FontFamily="Segoe UI" FontSize="25" FontStretch="UltraExpanded" 
               Text="TimeLogger" />
</Border>
于 2012-10-17T19:33:43.720 回答