更改窗口标题栏中显示的图像的颜色

时间:2017-04-09 17:11:31

标签: wpf

除了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);

1 个答案:

答案 0 :(得分: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"/>

因此,如果活动边框颜色较暗,则图像将显示为白色;如果活动边框颜色较浅,则图像将显示为黑色,而矩形的其余部分将是透明的。