2017-04-09 80 views
0

除3(最小化,最大化,關閉)按鈕之外還有圖像。當窗口背景顏色設置爲黑色時,圖像不可見。我想改變顏色,就像那些3個按鈕改變一樣(白色當背景是黑色的,反之亦然),任何幫助表示讚賞。用刷子試過畫布,力助。更改窗口標題欄中圖像的顏色

設置相關圖片如下:

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

好。我更新了我的答案,根據活動窗口邊框的顏色將圖標着色爲白色或黑色。 – AQuirky