none
如何使图片按钮按下时瞬间变半透明 RRS feed

  • 问题

  •  <VisualState x:Name="Pressed">
                                            <Storyboard>
                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
                                                </ObjectAnimationUsingKeyFrames>
                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource myTrammitButtonBrush}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </VisualState>
    大家好,万能的版主你好,查看了相关资料文档,也看过了http://social.msdn.microsoft.com/Forums/zh-CN/67b1f1c1-ff3f-490d-9b53-f2118ae82090/faq-metro?forum=winstoreappzhcn   知道需要在press这里修改,但是要怎么修改按钮按下时的属性呢?需要按钮按下时,按钮变半透明。
    2013年11月27日 7:07

答案

  • Hi pingglala

    从你目前的代码来看,我不是很明白你的意思,你在Button控件中加入了一个Image,然后你想在Button被点击的时候,Button中的图片并没有消失,但是后面又出现了一个灰色的大图片,这个大图片是否就是你的ShowList.png。目前我不是很清楚你想怎么实现这个功能,如果我想实现类似功能的话,我会按下面做法去做。

    因为你的Image是Button的Content,所以只需要在按下的时候对ContentPresenter做出对应改变,如下所示。

    <VisualState x:Name="Pressed">
            <Storyboard>
                     ...              
                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ContentPresenter">
                                 <DiscreteObjectKeyFrame KeyTime="0" Value="0.5"/>
                      </ObjectAnimationUsingKeyFrames>
             </Storyboard>
    </VisualState>

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 pingglala 2013年11月29日 2:12
    2013年11月28日 8:16
    版主

全部回复

  • 按钮的容器是什么,一般是在定义里面最外层的一个Grid,在Pressed里面的Storyboard中添加下面代码

    <DoubleAnimation Storyboard.TargetName="你的容器" Storyboard.TargetProperty="Opacity" To="0.5" Duration="0:0:0.1" />
    <PointerDownThemeAnimation  Storyboard.TargetName="你的容器"/>

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.


    2013年11月27日 14:13
    版主
  • 版主你说得容器是什么意思呢,

    button里面有一张图片,图片位于button中间。

                        <Button x:Name="m_appbarShowListBut"  BorderThickness="0" Width="77" Height="66" Click="AppbarShowListBut_ClickEvent">
                            <Image x:Name="m_appbarShowListButImg" Margin="0,0,0,0"  Source="/Assets/ShowList.png"/>
                        </Button>
    

    我尝试将半透明的此图片做为按钮按下时的blackground,但是按下时,它是直接全部填充了我的按钮,而不是位于button中间。

                                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
                                                    <DiscreteObjectKeyFrame KeyTime="0">
                                                        <DiscreteObjectKeyFrame.Value>
                                                            <ImageBrush ImageSource="/Assets/ShowList.png" Opacity="0.5" Stretch="UniformToFill"/>
                                                        </DiscreteObjectKeyFrame.Value>
                                                    </DiscreteObjectKeyFrame>
                                                </ObjectAnimationUsingKeyFrames>
                         

    2013年11月28日 2:17
  • Hi pingglala

    从你目前的代码来看,我不是很明白你的意思,你在Button控件中加入了一个Image,然后你想在Button被点击的时候,Button中的图片并没有消失,但是后面又出现了一个灰色的大图片,这个大图片是否就是你的ShowList.png。目前我不是很清楚你想怎么实现这个功能,如果我想实现类似功能的话,我会按下面做法去做。

    因为你的Image是Button的Content,所以只需要在按下的时候对ContentPresenter做出对应改变,如下所示。

    <VisualState x:Name="Pressed">
            <Storyboard>
                     ...              
                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ContentPresenter">
                                 <DiscreteObjectKeyFrame KeyTime="0" Value="0.5"/>
                      </ObjectAnimationUsingKeyFrames>
             </Storyboard>
    </VisualState>

    --James


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 pingglala 2013年11月29日 2:12
    2013年11月28日 8:16
    版主
  • 好的,问题已经解决了,就是按下时图片变半透明,谢谢版主,么么哒~
    2013年11月29日 2:12