1

WPFアプリケーションでは、背景に簡単な画像が表示されたボタンを挿入します。

<Button Grid.Column="2" BorderBrush="Transparent" HorizontalAlignment="Left" Height="20" Margin="15,0,0,0" VerticalAlignment="Center" Width="20">
    <Button.Background>
       <ImageBrush ImageSource="Divalto_Rechercher_25px.png" Stretch="Uniform"></ImageBrush>
    </Button.Background>
</Button>

マウスオーバーで、画像の画像の色を変換したいと思います。

これがマウスが出ているときの写真です:

ここに画像の説明を入力してください

そして、マウスが終わったら、私はこのようなものが欲しいです:

ここに画像の説明を入力してください

これを動的に実行したいと思います(画像の色を動的に変換します)。

これが試してみましたが、完全ではありません:

<Button Grid.Column="2" BorderBrush="Transparent" HorizontalAlignment="Left" Height="20" Margin="15,0,0,0" VerticalAlignment="Center" Width="20">
  <Button.Background>
    <ImageBrush ImageSource="appbar.feature.search.rest.png" Stretch="Uniform"></ImageBrush>
  </Button.Background> 
    <EventTrigger RoutedEvent="Button.MouseEnter">
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation
                    Storyboard.TargetName="AnimBrush" 
                    Storyboard.TargetProperty="(SolidColorBrush.Color)"
                    From="Red" To="Green" Duration="0:0:5" 
                    AutoReverse="True" RepeatBehavior="Forever" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Button>

誰か助けてくれませんか?

どうもありがとう、

よろしくお願いします、

4

3 に答える 3

2

内部で をとしてContent作成し、またはを使用してを変更できます。画像スタイルを表示したいだけの場合は、テンプレートをオーバーライドすることをお勧めします。そうしないと、マウスが上にあるときにボタン フォーカス スタイルが取得されます。BorderImageBorder BackgroundTriggerAnimationButton

例:

 <Button BorderBrush="Transparent" HorizontalAlignment="Left" Height="50" Margin="12,24,0,238" VerticalAlignment="Center" Width="51">
        <Button.Content>
            <Border CornerRadius="5">
                <Image Margin="3" Source="http://icons.iconarchive.com/icons/custom-icon-design/mini/32/Search-icon.png" Stretch="Uniform" />
                <Border.Style>
                    <Style TargetType="{x:Type Border}">
                        <Setter Property="Background" Value="LimeGreen" />
                        <Style.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="Red" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </Border.Style>
            </Border>
        </Button.Content>
        <Button.Style>
            <Style TargetType="{x:Type Button}" >
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}" >
                            <ContentPresenter />
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Button.Style>
    </Button>

結果:

通常ここに画像の説明を入力のマウスオーバーここに画像の説明を入力

于 2013-02-18T20:54:12.703 に答える
0

XAML に StoryBoard を追加する必要があるようです。透明な画像がある場合は、ボタンの塗りつぶしの色を変更してみませんか?

以下のコードはテストしていませんが、踏み台として使用できるものです。

<EventTrigger RoutedEvent="Button.MouseOver">
      <BeginStoryboard>
        <Storyboard>
          <ColorAnimation
            Storyboard.TargetName="AnimBrush" 
            Storyboard.TargetProperty="(SolidColorBrush.Color)"
            From="Red" To="Green" Duration="0:0:5" 
            AutoReverse="True" RepeatBehavior="Forever" />
        </Storyboard>
      </BeginStoryboard>
 </EventTrigger>
于 2013-02-18T20:30:00.857 に答える
0

ボタンのコンテンツを必要な画像に設定してみませんか? それがおそらく最も簡単な方法です。次に、マウスイベントで変更できます。このSOの回答を参照してください

白い虫眼鏡だけの画像があり、画像の残りの部分が透明な場合は、ボタンのコンテンツを画像に設定し、背景を希望の色 (オレンジまたは黒) に設定する必要があります。

于 2013-02-18T19:44:28.273 に答える