這裏是做你想要的東西的一種方式。使用圖像作爲不透明蒙版畫一個矩形。
<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"/>
所以這裏的圖像將顯示爲白色,如果活動邊框如果活動邊框顏色較淺且矩形的其餘部分將變爲透明,則顏色爲深黑色。
感謝AQuirky,雖然這與紅色正常工作,但我一直在尋找像按鈕(最小,最大,關閉)如何工作的動態着色。想要黑色<->白色,而不是其他純色。 –
好。我更新了我的答案,根據活動窗口邊框的顏色將圖標着色爲白色或黑色。 – AQuirky