微信聊天和通讯录按钮样式

原文:微信聊天和通讯录按钮样式

一、先用Path画一下轮廓

<Path Stroke="Red" StrokeThickness="1" Margin="10" StrokeDashCap="Round">
     <Path.Data>
         <GeometryGroup>
             <PathGeometry Figures="M 4,40 A 16,13 0 1 1 10,45 L 3,48 Z" />
         </GeometryGroup>
     </Path.Data>
</Path>
<Path Stroke="Red" StrokeThickness="1" StrokeDashCap="Round" Margin="50">
     <Path.Data>
         <GeometryGroup>
             <PathGeometry Figures="M 12,30 A 6,10 0 1 1 18,30 L 30,40 L 30,45 L 0,45 L 0,40Z" />
             <PathGeometry Figures="M 25,25 L 35,25"/>
             <PathGeometry Figures="M 28,30 L 35,30"/>
             <PathGeometry Figures="M 32,35 L 35,35"/>
         </GeometryGroup>
     </Path.Data>
</Path>

路径图如下

二、将路径应用的样式里

    <!--聊天按钮的样式-->
    <Style x:Key="ChatStyle" TargetType="{x:Type RadioButton}">
        <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Padding" Value="1"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RadioButton}">
                    <Border>
                        <Path x:Name="btnPath" StrokeThickness="1" Stroke="Gray" Fill="#FF3E3E40">
                            <Path.Data>
                                <GeometryGroup>
                                    <PathGeometry Figures="M 4,40 A 16,13 0 1 1 10,45 L 3,48 Z" />
                                </GeometryGroup>
                            </Path.Data>
                        </Path>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="true">
                            <Setter Property="Fill" Value="#FF14D212" TargetName="btnPath"/>
                            <Setter Property="Stroke" Value="#FF14D212" TargetName="btnPath"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="Stroke" Value="White" TargetName="btnPath"/>
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsChecked"  Value="true"/>
                                <Condition Property="IsMouseOver" Value="true"/>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.Setters>
                                <Setter Property="Stroke" Value="#FF14D212" TargetName="btnPath"/>
                            </MultiTrigger.Setters>
                        </MultiTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!--通讯录的样式-->
    <Style x:Key="FriendStyle" TargetType="{x:Type RadioButton}">
        <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Padding" Value="1"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RadioButton}">
                    <Border>
                        <Path x:Name="btnPath" StrokeThickness="1" Stroke="Gray" Fill="#FF3E3E40">
                            <Path.Data>
                                <GeometryGroup>
                                    <PathGeometry Figures="M 12,30 A 6,10 0 1 1 18,30 L 30,40 L 30,45 L 0,45 L 0,40Z" />
                                    <PathGeometry Figures="M 25,25 L 35,25"/>
                                    <PathGeometry Figures="M 28,30 L 35,30"/>
                                    <PathGeometry Figures="M 32,35 L 35,35"/>
                                </GeometryGroup>
                            </Path.Data>
                        </Path>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="true">
                            <Setter Property="Fill" Value="#FF14D212" TargetName="btnPath"/>
                            <Setter Property="Stroke" Value="#FF14D212" TargetName="btnPath"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="Stroke" Value="White" TargetName="btnPath"/>
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsChecked" Value="true"/>
                                <Condition Property="IsMouseOver" Value="true"/>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.Setters>
                                <Setter Property="Stroke" Value="#FF14D212" TargetName="btnPath"/>
                            </MultiTrigger.Setters>
                        </MultiTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

看下效果图

注意要点有几个:

1、Path原来必须要有填充,也就是说Fill必须要有值,否则会认为是透明,点击不到。

2、一定要设置MultiTrigger,否则当button被选中的时候,鼠标划过,依然会变白色。

原文地址:https://www.cnblogs.com/lonelyxmas/p/10789482.html

时间: 2024-10-06 12:11:05

微信聊天和通讯录按钮样式的相关文章

微信聊天文本框的样式 for Android

先使用layer-list建立个样式,文件名为:edit_text_style_1.xml 代码如下. <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape> <solid android:colo

android 仿微信聊天界面,以及语音录制功能

extends:http://104zz.iteye.com/blog/1709840 本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI. 1先看效果图:     第一:chat.xml设计 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" an

iOS开发之微信聊天页面实现

在上篇博客(iOS开发之微信聊天工具栏的封装)中对微信聊天页面下方的工具栏进行了封装,本篇博客中就使用之前封装的工具栏来进行聊天页面的编写.在聊天页面中主要用到了TableView的知识,还有如何在俩天中显示我们发送的表情,具体请参考之前的博客:IOS开发之显示微博表情,在这儿就不做赘述啦.在聊天页面用到了三对,六种Cell,不过cell的复杂度要比之前的新浪微博(IOS开发之新浪围脖)简单的多.废话少说吧,还是先来几张效果图,在给出实现代码吧. 聊天界面的效果图如下:在下面的聊天界面中中用到了

关于微信聊天与朋友圈如何快速切换 Mark

用微信时,你是否遇到这样的情况.你正刷着朋友圈,享受着各种鸡汤,这时候,你收到一条微信,一看是女王大人,不得不回.你诚恳的回了一条,等了二十秒不见有什么回应,于是就退了出来,进入朋友圈找到那篇没看完的文章,没看两行字,那边就回复你了,于是你又乖乖地回过去,来来回回,很麻烦!那,为什么聊天和朋友圈间不能有一种更快捷的切换方式呢? 实际上不只是“朋友圈”和“聊天”页面间的切换,看订阅号的文章.逛商城.使用微信里面的O2O服务时都存在这样的问题.简洁是微信的设计原则,微信的整个架构十分清晰,四个Tab

本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI(转载)

首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼ 您还未登录 ! 登录 注册 机遇&速度 博客 微博 相册 收藏 留言 关于我 android 仿微信聊天界面,以及语音录制功能 博客分类: android 录音 android 录音android 仿微信聊天界面android 仿微信录音UIandroidandroid 语音 本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI. 1先看效果图:     第一:chat.xml设计 Xml代码   <?xml version=&q

&lt;a&gt;按钮样式

网页上有很多功能是通过链接方式传递参数,这种功能链接普通样式就是一个超链接 退出,如果将超链接的样式变成按钮样式,给用户的感觉会更好. 一种方法是给a标签添加display:block的样式,并添加hover样式. <style type="text/css"> div.container { width: 600px; /*height: 200px;*/ border-bottom: 2px solid green; padding: 10px; } .containe

小程序-微信聊天功能开发详解

需求:聊天功能(效果参照微信聊天) 直接先放效果图吧! 框架: wepy (vue) 主要思路: 1.布局只编写一个消息组件,包括头像和内容两部分!flex布局(左到右row),对方发来的消息正常显示,我方发出去的消息右到左布局(flex-direction: row-reverse;),这样增加了消息组件的复用!如图消息组件: 2.消息数据全部存储在一个Array中,demo如图:text为消息内容.isMine判断该消息来自于对方还是我自己,从而动态消息item的CSS布局(左到右或右到左)

怎么监控别人微信聊天 同步微信不被发现 _教程软件

2019年微信公开课上,微信发布2018年度微信数据报告,报告向我们展示了微信用户量的增长,视频通话的增长,用户通讯录条数的增长,每个人支付笔数的增长等等,还有总结了各个人群的爱好和作息时间,各类人群喜欢使用的微信表情等等. 然后看完这个报告大家都感叹微信增长速度真快,移动互联网生活改变真大,但是一小部分网友站出来像腾讯提出疑问,是不是在如今的大数据时代,我们的隐私被别人看得一清二楚了,得到这份数据是不是监控用户聊天了? 有人提出这样的疑问后,网友纷纷开始发问,微信不查看用户内容如何统计微信表情

HTML5+weui仿微信聊天功能、长按删除功能

最近由于项目需要, 就运用html5+css3+weui+jquery实现的微信聊天小案例,可发表图像.红包.打赏...功能, 还可以长按删除消息... 案例截图如下: HTML及Js片段: <!DOCTYPE html><html lang="zh-cn"><head> <meta charset="UTF-8" /> <title>消息上墙</title> <meta name=&qu