none
按钮形状 RRS feed

  • 问题

  • (1)WPF中怎么改按钮的形状(不规则图形)

    (2)怎么把按钮放在flash上面呢?

    就是把形状不规则的按钮放在flash上,求助

     

     

    2011年6月1日 9:22

答案

  • 你好,WPF_ccccccq,

    正如Bob版主所说的,WPF提供了强大的样式和模板功能,可以对控件进行自定义的更改。如果你想要改变按钮的形状,只需要对其进行ControlTemplate进行修改即可。下面是一个简单的例子,我们通过对Button的Template自定义,把形状改成了一个红色的圆角矩形,并且可以响应点击事件来改变背景颜色:

    <Button Content="Click" Foreground="Black">
          <Button.Style>
            <Style TargetType="{x:Type Button}">
              <Setter Property="Background" Value="Red"/>
              <Setter Property="Template">
                <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                  <Grid>
                    <Rectangle Width="200" Height="200" RadiusX="50" RadiusY="50" Fill="{TemplateBinding Background}"/>
                    <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
                  </Grid>
                  <ControlTemplate.Triggers>
                    <MultiTrigger>
                      <MultiTrigger.Conditions>
                        <Condition Property="IsFocused" Value="true"/>
                        <Condition Property="IsPressed" Value="true"/>
                      </MultiTrigger.Conditions>
                      <Setter Property="Background" Value="#ADADAD"/>
                    </MultiTrigger>
                  </ControlTemplate.Triggers>
                  </ControlTemplate>
                </Setter.Value>
              </Setter>
            </Style>
          </Button.Style>
        </Button>
    

    你可以在triggers里面添加其他自定义的行为,以及在template里面改变呈现形状。

    针对第二个问题,WPF目前还有没提供和Flash的完全交互,希望你可以知悉。

    希望以上信息对你能够有所帮助!

     


    Yves Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月1日 18:48
    版主
  • WPF是允许你重新设计控件样式的,是任何控件的样式,你只要重新制定一个图形给button的Tample就可以了。

    最简单的例子:

        <Button>
          <Button.Template>
            <ControlTemplate TargetType="{x:Type Button}">
              <Grid>
                <Ellipse Fill="Blue"/>
                <ContentPresenter/>
              </Grid>
            </ControlTemplate>
          </Button.Template>
        </Button>

    一个椭圆形的按钮 + 中间的文字。

    详细的请学习下WPF 样式与模板:http://msdn.microsoft.com/zh-cn/library/ms745683.aspx  &  http://msdn.microsoft.com/zh-cn/magazine/cc163497.aspx   和参阅任何一本WPF书籍中的样式模板章节。

     

    关于第二个问题是不可能实现的,目前还没有一种技术可以让WPF的内容放入到Flash中。你要么使用Flash技术来设计你的控件,要么WPF, 不会说用WPF设计好了给Flash用的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月1日 18:33
    版主

全部回复

  • 或者有什么控件可以根据图片形状变化的?
    2011年6月1日 9:59
  • WPF是允许你重新设计控件样式的,是任何控件的样式,你只要重新制定一个图形给button的Tample就可以了。

    最简单的例子:

        <Button>
          <Button.Template>
            <ControlTemplate TargetType="{x:Type Button}">
              <Grid>
                <Ellipse Fill="Blue"/>
                <ContentPresenter/>
              </Grid>
            </ControlTemplate>
          </Button.Template>
        </Button>

    一个椭圆形的按钮 + 中间的文字。

    详细的请学习下WPF 样式与模板:http://msdn.microsoft.com/zh-cn/library/ms745683.aspx  &  http://msdn.microsoft.com/zh-cn/magazine/cc163497.aspx   和参阅任何一本WPF书籍中的样式模板章节。

     

    关于第二个问题是不可能实现的,目前还没有一种技术可以让WPF的内容放入到Flash中。你要么使用Flash技术来设计你的控件,要么WPF, 不会说用WPF设计好了给Flash用的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月1日 18:33
    版主
  • 你好,WPF_ccccccq,

    正如Bob版主所说的,WPF提供了强大的样式和模板功能,可以对控件进行自定义的更改。如果你想要改变按钮的形状,只需要对其进行ControlTemplate进行修改即可。下面是一个简单的例子,我们通过对Button的Template自定义,把形状改成了一个红色的圆角矩形,并且可以响应点击事件来改变背景颜色:

    <Button Content="Click" Foreground="Black">
          <Button.Style>
            <Style TargetType="{x:Type Button}">
              <Setter Property="Background" Value="Red"/>
              <Setter Property="Template">
                <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                  <Grid>
                    <Rectangle Width="200" Height="200" RadiusX="50" RadiusY="50" Fill="{TemplateBinding Background}"/>
                    <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
                  </Grid>
                  <ControlTemplate.Triggers>
                    <MultiTrigger>
                      <MultiTrigger.Conditions>
                        <Condition Property="IsFocused" Value="true"/>
                        <Condition Property="IsPressed" Value="true"/>
                      </MultiTrigger.Conditions>
                      <Setter Property="Background" Value="#ADADAD"/>
                    </MultiTrigger>
                  </ControlTemplate.Triggers>
                  </ControlTemplate>
                </Setter.Value>
              </Setter>
            </Style>
          </Button.Style>
        </Button>
    

    你可以在triggers里面添加其他自定义的行为,以及在template里面改变呈现形状。

    针对第二个问题,WPF目前还有没提供和Flash的完全交互,希望你可以知悉。

    希望以上信息对你能够有所帮助!

     


    Yves Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月1日 18:48
    版主
  • 1.我说的形状很复杂,非常不规则,基本上要手绘,直接用数字我也不太会(譬如:棉花,云,心脏等),有什么好的办法么?

    2.如果把flash导成gif格式或者avi格式就应该可以了吧?我并不是对flash本身操作,只是需要对其放大,缩小和旋转

    2011年6月2日 5:46
  • 我觉得你还是应该回归到WPF技术本身,而不是纠结于你要实现的东西。WPF本身很灵活的可以实现多总元素的整合,包括我拿图片当Button ,拿图形当Button都可以,我们只需要更改Template.你说你的形状复杂,那我们可以先把形状用绘图软件做好,导成图片,然后在WPF中使用,而不是单单在想如何用数字去画(说实话,我们也是用一些绘图工具来实现复杂图形的,没有人会去直接写数据画图的,就相当于现在没有人会去直接用机器语言写程序了)

     

    你的意思是在WPF里面潜入Flash? MEdiaElement 或者Image组件就可以帮你整合 多媒体信息和图片了。然后应用变换效果即可。书上会有具体的做法的,MSDN文档也有介绍:

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月2日 6:02
    版主
  • #1。WPF支持Path类,我们可以通过它来做各种形状的组合,比如曲线,椭圆和矩形等等 你可以参考一下这个网页http://www.cnblogs.com/SkyD/archive/2008/07/15/1243716.html 里面提及一个自定义形状的按钮,通过Blend软件可以比较容易作出类似形状。

    #2. 如果将flash导成gif格式我们可以使用Image控件来做交互,你的意思是用按钮来控制这个Image的放大,缩小等操作吗?我想这是可以完成的。如果不是这样,请您详细阐述下的你需求。

    This response contains a reference to a third party World Wide Web site. Microsoft is providing this information as a convenience to you. Microsoft does not control these sites and has not tested any software or information found on these sites; therefore, Microsoft cannot make any representations regarding the quality, safety, or suitability of any software or information found there. There are inherent dangers in the use of any software found on the Internet, and Microsoft cautions you to make sure that you completely understand the risk before retrieving any software from the Internet.

    此回复包含了指向第三方的网址信息. Microsoft提供此链接以帮助您了解更多信息.此链接不受控于Microsoft且此链接包含的任何软件与信息未经验证.Microsoft无法保证其质量,安全性以及稳定性.从互联网获取软件与信息有潜在的危险, Microsoft提醒您知悉此风险.


    Yves Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月2日 6:04
    版主
  • 是这样的,要求是背景弄个flash(其实就是要背景的动态效果,我试过gif了,页面效果质量不好)

    上面有几个按钮,点击一个按钮,弹出一个flash(不知道该把这个flash放在哪里,控件?还是单独的窗体?),对此flash实现放大缩小以及旋转

    谢谢两位版主耐心解答  o(∩_∩)o 
    2011年6月3日 7:09
  • 关于在WPF里面嵌入Flash 你看这个 http://blogs.msdn.com/b/jijia/archive/2007/06/07/wpf-flash-activex.aspx ,这个属于ActiveX和WPF交互了,最简单的方法就是用WebBrowser来放Flash (就是基于浏览器来播放Flash)。

    按钮背景不可能是Flash的,GIF在WPF默认也是没有动画效果的。所以你可以在你的按钮背景做点WPF动画啊。比如我的这个按钮例子:http://cid-51b2fdd068799d15.office.live.com/self.aspx/.Public/ValuableSamples/AnimationImageButton.zip

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月3日 8:40
    版主
  • WPF_ccccccq, 在Bob的建议下你是否可以完成你所想要的效果呢?有其他的问题的话可以即时让我们知道。


    Yves Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月9日 3:28
    版主
  • 谢谢,这两天没在,,已经解决了~

    2011年6月9日 8:17