Получить все изображения, на которые не наведена мышь в WPF

У меня есть окно WPF, которое заполняется множеством изображений, я пытаюсь найти способ размыть все изображения, над которыми мышь НЕ наводит курсор.

Я использую это событие для создания изображений, над которыми я нахожу:

private void Window_MouseMove(object sender, MouseEventArgs e)
{
    if (e.OriginalSource is Image)
    {
        ((Image)e.OriginalSource).Effect = new BlurEffect();
    }
}

Вот как я создал изображения

        StackPanel imgStkpnl = new StackPanel();

        foreach (var urll in Tools.MyGlobals.GoogleImageURLs)
        {
            var image = new System.Windows.Controls.Image();
            var fullFilePath = urll;

            BitmapImage bitmap = new BitmapImage();
            bitmap.BeginInit();
            try
            {
                bitmap.UriSource = new Uri(fullFilePath, UriKind.Absolute);
                bitmap.EndInit();

                image.Source = bitmap;
                image.Stretch = Stretch.Uniform;
                image.HorizontalAlignment = HorizontalAlignment.Left;

                imgStkpnl.Children.Add(image);
            }
            catch { }
        }

Если кто-нибудь знает способ сделать все остальные изображения более полезными, я большой новичок, поэтому будьте спокойны со мной:) Спасибо

1 ответ

Я смог достичь желаемого эффекта с помощью этого XAML:

<Window x:Class="Solutions.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel>

        <StackPanel.Resources>
            <BlurEffect x:Key="BlurEffect"></BlurEffect>

            <Style TargetType="Image">
                <Setter Property="Effect" Value="{StaticResource BlurEffect}"></Setter>

                <Style.Triggers>
                    <EventTrigger RoutedEvent="MouseEnter" >
                        <BeginStoryboard>
                            <Storyboard>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Effect">
                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Null}"></DiscreteObjectKeyFrame>
                                </ObjectAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                    <EventTrigger RoutedEvent="MouseLeave">
                        <BeginStoryboard>
                            <Storyboard>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Effect">
                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BlurEffect}"></DiscreteObjectKeyFrame>
                                </ObjectAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
        </StackPanel.Resources>

        <Image Source="cat.jpg" Width="200"></Image>
        <Image Source="cat.jpg" Width="200"></Image>
        <Image Source="cat.jpg" Width="200"></Image>
    </StackPanel>
</Window>

пример

Исходя из вашего комментария, чтобы оставить изображение не размытым, просто удалите MouseLeave триггер события

Другие вопросы по тегам