2012-01-10 1 views
5

を埋める私はそうのように定義された境界線があります。ボーダーコーナー半径は、残虐行為

<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 fills poorly at radius corner

あなたは明確に暗いフォアグラウンドを通じて輝く明るい背景を見ることができます。これを緩和する方法はありますか?

EDIT:追加の絵、それは背景がを通して輝いていることを示す。またを通じて取得中(黒半分に対し、

この場合

Border fills poorly at radius corner

は、背景のみ白半分が見られます)は実際には検出できません。

答えて

5

この場合、通常は2つの罫線を互いに内側にネストします。これは内側の塗りつぶしの色が不透明な場合にのみ機能しますが、あなたのものはすでにそうであるので、これはうまくいくはずです。

ので、代わりの、例えば(フォローする例を容易にするために、固体の色の代わりに、グラデーションを使用して):

あなたの代わりに使用することができ
<Border BorderThickness="1,1,1,2" CornerRadius="0,0,16,16" 
     BorderBrush="Blue" Background="Gray"> 
    ... 
</Border> 

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

だから、外側ボーダーの用途「境界線」の色をBackgroundとし、内側の境界線をMarginと「境界線の幅」に設定し、次にBackgroundに実際の「背景色」を使用します。エフェクトは同じですが、半透明のシームは消えています。

右のようにするには、内枠のCornerRadiusを調整する必要があります。枠内にあるので、外側の角よりもわずかに小さい半径になります。境界線が1ピクセル幅の場合は、CornerRadiusを1ピクセル小さくします。ボーダーが不揃いなので、正しいと思われるものを目で確認したいと思うかもしれません。

+1

ありがとうございました - 魅力的なように働きました。 – jomido

0

そのため、BorderThicknessとBorderBrushが設定されています。 このようにそれを試してみてください:あなたは明るく、背景が暗いフォアグラウンドを通じて輝いて見るが、私はそのちょうどあなたのBorder.BorderBrushを考えるようにそれはそうなるよう

<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と同じisint。

+0

視覚効果のために境界線が必要なので、0に設定することはできません。また、Border.BorderBrushだけが輝くわけではありません。どの瞬間でもウィンドウの背後にある色が何であっても(私はそれを確認しました:))。 – jomido

+0

あなたは色の光る谷について正しいところですか?タフ、私はあなたがそうでなければあなたの視覚効果をしようとするべきだと思います。あなたはあなたの国境の使用についてより多くの情報を得られますか? – Gab

+0

はい?どのように私は視覚効果を行う必要がありますか? – jomido

0

もう1つのオプション:私は、アンチエイリアスのギャップを修正するBorderのサブクラスを書きました。最新コードhere。しかし、あなたが望むことを使用します。