Wpf 边界角半径填充暴行

Wpf 边界角半径填充暴行,wpf,Wpf,我的边界定义如下: <Border x:Name="BaseBar" BorderThickness="1,1,1,2" Height="29" CornerRadius="0,0,16,16" Grid.Row="2"> <Border.BorderBrush> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF6E

我的边界定义如下:

<Border x:Name="BaseBar" BorderThickness="1,1,1,2" Height="29" CornerRadius="0,0,16,16" Grid.Row="2">
<Border.BorderBrush>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#FF6E6E6E" Offset="0.004"/>
        <GradientStop Color="#FF1A1A1A" Offset="0.043"/>
    </LinearGradientBrush>
</Border.BorderBrush>
<Border.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#FF313131" Offset="0"/>
        <GradientStop Color="#FF232323" Offset="1"/>
    </LinearGradientBrush>
</Border.Background>

但是,当角点有半径时,它不能正确填充。以下是左下角的图像:

你可以清楚地看到明亮的背景在黑暗的前景中闪烁。有没有办法缓解这种情况

编辑:附加图片,显示背景通过以下方式发光:


在这种情况下,只看到背景的白色部分,而黑色部分(同时也穿过)实际上无法检测到。

这是因为您设置了边界厚度和边界笔刷。 试着这样做:

    <Border x:Name="BaseBar" BorderThickness="0" Height="29" CornerRadius="0,0,16,16">
        <Border.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FF313131" Offset="0"/>
                <GradientStop Color="#FF232323" Offset="1"/>
            </LinearGradientBrush>
        </Border.Background>
    </Border>


Border.BorderBrush与Border.Background不同,因此看起来你可以看到较亮的背景在较暗的前景中闪烁,但我认为这只是你的Border.BorderBrush。

在这种情况下,我通常将两个边框嵌套在一起。这只适用于内部填充颜色不透明的情况,但您的颜色已经不透明,所以这应该是好的

例如,使用纯色而不是渐变色,使示例更容易理解:


...
您可以改为使用:

<Border CornerRadius="0,0,16,16" Background="Blue">
  <Border CornerRadius="0,0,15,15" Background="Gray" Margin="1,1,1,2">
    ...
  </Border>
</Border>

...
因此,外部边框使用“边框”颜色作为其
背景
,然后内部边框将其
边距
设置为“边框宽度”,然后使用真实的“背景”颜色作为其
背景
。效果相同,但半透明接缝消失了


要使其看起来正确,您需要调整内边框的
拐角半径
——它位于边框内部,因此半径略小于外拐角。如果边框宽度为1像素,则您希望
拐角半径
小1像素;但是,由于边界不均匀,您可能只想仔细观察它,看看什么是正确的。

还有一个选项:我编写了一个子类border,用于修复抗锯齿间隙。最新代码。可以随意使用。

我需要边框以获得视觉效果,因此无法将其设置为0。此外,这不仅仅是边界。边界刷闪耀通过。在任何特定时刻,窗户后面的任何颜色都是透过窗户发出的光(我检查了:)。你知道颜色发光槽在哪里吗!很难,我认为你应该尝试做你的视觉效果,否则。你能提供更多关于边界使用的信息吗?是的?我不知道,我要求你提供更多关于视觉效果的信息。但不管怎样,乔·怀特的回答似乎比我的好。解决了我的问题。谢谢
<Border CornerRadius="0,0,16,16" Background="Blue">
  <Border CornerRadius="0,0,15,15" Background="Gray" Margin="1,1,1,2">
    ...
  </Border>
</Border>