2017-04-09 10 views
0

3(最小化、最大化、終了)ボタンのほかに画像があります。ウィンドウの背景色が黒に設定されていると、画像がはっきりと見えません。私はそれらの3つのボタンのような色を変更したい(背景は黒とviceversa白)、任意の助けに感謝します。ブラシを使ってキャンバスを試してみましょう。ウィンドウタイトルバーに表示されている画像の色を変更します

次のように画像を設定する:ここで

var img= new Image() 
      { 
       Width = 24, 
       Height = 24, 
       Source = 
        new BitmapImage(
         new Uri(some.png", 
          UriKind.Absolute)), 
       Tag = tag 
      }; 
      stackPanel.Children.Insert(0, img); 

答えて

0

は、あなたが欲しいものを行うための一つの方法です。イメージを不透明マスクとして使用して四角形を描画します。

 <Rectangle x:Name="Icon1" Height="30" Width="30" Fill="{Binding Converter={StaticResource IconColorConverter}}"> 
      <Rectangle.OpacityMask> 
       <ImageBrush ImageSource="Images/globe.png" Stretch="None" TileMode="Tile" /> 
      </Rectangle.OpacityMask> 
     </Rectangle> 

画像が

public class IconColorConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     Color wb = SystemColors.ActiveBorderColor; 
     double gs = (wb.R * 0.3 + wb.G * 0.6 + wb.B * 0.1)/255.0; 
     if (gs > 0.5) 
      return Brushes.Black; 
     else 
      return Brushes.White; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

白または黒のリソース定義になりますかどうかを判断するために、コンバータを使用します。

<local:IconColorConverter x:Key="IconColorConverter"/> 

だからここの画像は、アクティブなボーダーかの白として表示されますアクティブな境界線の色が明るく、残りの四角形が透明な場合は、色は濃く黒です。

+0

ありがとうございますAQuirky、これは赤色で正常に動作しますが、ボタン(最小、最大、終了)の仕組みのような動的な色付けを見ていました。黒色にしたいと考えています<->他の無地の色ではなく白い色です。 –

+0

Fine。私はアクティブなウィンドウの境界線の色に応じて、アイコンを白または黒に色付けするように答えを更新しました。 – AQuirky

関連する問題