首页 新闻 会员 周边 捐助

WPF中图片背景透明问题

0
悬赏园豆:15 [已解决问题] 解决于 2013-06-24 19:15

在WPF中,设置Button如下,然后给Button添加一个透明背景图片

        <Style TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </ControlTemplate>

                </Setter.Value>
            </Setter>
        </Style>
                <Button Margin="5,0"  Cursor="Hand"  Click="ButtonBase_OnClick">
                    <Image Source="0.png"></Image>
                </Button>

这样按钮的显示可以透明,但是响应区域仍为矩形,在图片的透明区域还是可以点到按钮

问一下,如何让按钮不响应透明的区域,点击按钮的透明区域是,不响应按钮事件

的样式

bomo的主页 bomo | 初学一级 | 园豆:19
提问于:2013-06-10 17:49
< >
分享
最佳答案
0
你把Button的背景设置为一个透明的图片,虽然你看到的Button热区域只是你的背景图片,但是实际热区域还是Button的边框决定的,当鼠标点击到该热区域范围内时,肯定会触发Click事件,楼主可以自定义一个Button模版,或者用Blend画一个Button,下面有个例子,希望可以帮到你:
 1 <Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
 2             <Setter Property="Foreground" Value="White"/>
 3             <Setter Property="Template">
 4                 <Setter.Value>
 5                     <!--设置样式 -->
 6                     <ControlTemplate TargetType="{x:Type Button}">
 7                         <Grid>
 8                             <Rectangle x:Name="Rectangle" Stroke="#FFFFFFFF" StrokeMiterLimit="1.000000" StrokeThickness="0.500000" RadiusX="10" RadiusY="10" Fill="Green">
 9                             </Rectangle>
10                             <ContentPresenter x:Name="ContentPresenter" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
11                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
12                         </Grid>
13                         <!-- 设置鼠标移到关闭按钮上的效果 -->
14                         <ControlTemplate.Triggers>
15                             <Trigger Property="IsMouseOver" Value="true">
16                                 <Setter Property="Fill" TargetName="Rectangle">
17                                     <Setter.Value>
18                                         <SolidColorBrush Color="White"></SolidColorBrush>
19                                     </Setter.Value>
20                                 </Setter>
21                                 <Setter Property="Foreground" Value="Black"></Setter>
22                             </Trigger>
23                         </ControlTemplate.Triggers>
24                     </ControlTemplate>
25                 </Setter.Value>
26             </Setter>
27         </Style>
View Code
收获园豆:15
Raylin | 菜鸟二级 |园豆:246 | 2013-06-14 10:52
其他回答(2)
0

最好能截个图看看,另外可以让图片填充整个区域。

铁掌水上漂 | 园豆:8 (初学一级) | 2013-06-10 18:20

比如图片是圆的,但是点击圆之外的区域按钮也会被触发,怎么让他不触发

支持(0) 反对(0) bomo | 园豆:19 (初学一级) | 2013-06-10 23:55

@薄暮: 我觉得用Image就可以达到你想用的效果,实现 MouseDown 事件就可以了

支持(0) 反对(0) 铁掌水上漂 | 园豆:8 (初学一级) | 2013-06-11 21:29
0

你可以设置button.Visibility = Visibility.Collapsed;这样就可以了

白东阳 | 园豆:202 (菜鸟二级) | 2018-05-11 16:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册