WPF复杂形状按钮

方法很简单,将图片转换为<path>就可以了(需要用到Photoshop)
不过一般情况下制作按钮都不会用到这种方法,通常只要用image填充一张图片或者把路径转成按钮控件就可以了。
之所以这样做,是见到一位坛友提问说:如何根据PNG图片的形状来决定按钮的形状,大概意思可能就是只有在PNG
图像形状范围内触发器才有效,不过他说的我也没怎么听明白,呵呵。。。自己试着做了一下。目前就想到了这个方法,也许还有更好的方法!
Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Path x:Name="形状_1" Data="M 32.9626,1.52588e-005C 64.8366,-1.05113 86.9761,13.3906 90.2887,40.0549C 121.366,22.922 167.447,36.5059 190.609,52.9298C 196.819,60.0817 203.031,67.2358 209.24,74.3877C 218.587,80.7901 229.685,81.6765 236.47,90.1236C 238.66,92.8495 248.286,130.997 249.369,135.901C 258.248,176.097 225.629,230.492 199.208,228.885C 210.609,245.719 247.47,243.846 260.834,260.357C 258.446,264.648 256.057,268.941 253.668,273.232C 254.624,273.232 255.579,273.232 256.535,273.232C 266.144,278.475 277.516,274.548 286.631,271.801C 286.631,278 286.631,284.2 286.631,290.398C 270.758,292.489 258.952,283.729 243.636,286.107C 231.045,288.061 212.93,298.373 196.342,291.829C 187.923,288.507 176.727,274.685 167.679,268.94C 169.112,257.974 170.545,247.004 171.978,236.038C 171.501,236.038 171.023,236.038 170.545,236.038C 158.23,240.139 147.846,241.445 150.481,257.496C 153.347,257.973 156.214,258.45 159.08,258.927C 157.574,270.027 155.171,292.206 163.38,301.843C 167.201,303.75 171.023,305.658 174.845,307.565C 178.188,315.194 181.533,322.825 184.877,330.453C 196.377,340.356 212.387,340.294 222.139,351.911C 148.1,351.911 74.0389,351.911 0,351.911C 2.38837,349.05 4.77742,346.189 7.16574,343.328C 26.8224,334.338 23.7874,310.676 37.262,296.12C 45.8601,298.028 54.4607,299.935 63.0588,301.843C 63.5364,300.412 64.0143,298.981 64.4919,297.551C 62.1036,285.154 59.7145,272.754 57.3262,260.357C 56.8485,260.357 56.3707,260.357 55.893,260.357C 55.893,267.986 55.893,275.617 55.893,283.246C 55.4153,283.246 54.9375,283.246 54.4599,283.246C 54.4599,282.292 54.4599,281.338 54.4599,280.385C 48.716,268.591 52.2378,254.85 53.0267,240.33C 42.9823,238.522 30.6873,236.171 25.7968,228.885C 20.3403,219.725 16.4283,166.867 14.3315,155.928C 25.3332,155.55 33.2694,151.907 37.262,144.484C 42.9325,134.876 41.5233,110.573 44.4278,98.7068C 43.4724,99.1836 42.5168,99.6605 41.5615,100.137C 36.665,114.747 29.8112,126.853 25.7968,144.484C 25.3191,144.484 24.8413,144.484 24.3636,144.484C 20.4211,118.72 25.9583,98.0166 34.3957,81.5404C 21.5746,91.6128 18.1252,106.513 10.0321,121.595C 9.55441,121.595 9.0766,121.595 8.59889,121.595C 8.59889,121.119 8.59889,120.642 8.59889,120.165C 18.9555,78.4881 36.1168,33.5594 88.8555,41.4855C 82.3319,4.01784 40.9382,1.40187 8.59889,12.8748C 9.55426,11.4444 10.5099,10.0137 11.4652,8.58327C 18.6303,5.72243 25.7975,2.86086 32.9626,1.52588e-005 Z " Stretch="Fill" RenderTransformOrigin="0.5,0.5">
<Path.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Path.RenderTransform>
<Path.Effect>
<DropShadowEffect ShadowDepth="" BlurRadius="" Color="#FF646464"/>
</Path.Effect>
<Path.Fill>
<ImageBrush ImageSource="图层 1.png"/>
</Path.Fill>
</Path>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content=""/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True"/>
<Trigger Property="IsDefaulted" Value="True"/>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RenderTransform" TargetName="形状_1">
<Setter.Value>
<TransformGroup>
<ScaleTransform ScaleX="1.01" ScaleY="1.01"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Effect" TargetName="形状_1">
<Setter.Value>
<DropShadowEffect BlurRadius="" Color="Red" ShadowDepth=""/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="False"/>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
转载:http://blog.csdn.net/cmis7645/article/details/7592372
WPF复杂形状按钮的更多相关文章
- WPF解决按钮上被透明控件遮盖时无法点击问题
原文:WPF解决按钮上被透明控件遮盖时无法点击问题 IsHitTestVisible="False" 在控件上设置如上属性即可,即可让透明控件不触发点击效果
- [C# WPF] 根据按钮动态跳转窗体
WPF 根据按钮动态跳转窗体 XMAL文件中,用Tag保存要跳的页面 <Button Name="btnWindow01" Content="ClickMe&quo ...
- 写自己的WPF样式 - 按钮
做一个后台管理小程序,据说WPF的界面比较"炫",于是选择使用WPF来开发.既然用了WPF当然需要做好看点了,于是稍微研究了下WPF的样式,废话不多说下面开始自定义一个按钮样式: ...
- WPF界面按钮美化
在App.xaml里加入全局按钮样式 <Application x:Class="WpfButton.App" xmlns="http://schemas.micr ...
- WPF -- 自定义按钮
本文介绍WPF一种自定义按钮的方法. 实现效果 使用图片做按钮背景: 自定义鼠标进入时效果: 自定义按压效果: 自定义禁用效果 实现效果如下图所示: 实现步骤 创建CustomButton.cs,继承 ...
- WPF实现按钮鼠标停留样式的一个坑
弄了个按钮鼠标停留样式,发现把它应用到某些窗体的Button上会发生样式模糊的问题,而其它窗体又不会. 百思不得其解,真是活久见. 后来发现是跟包着Button的容器控件有关,只要是那些会自适应的容器 ...
- WPF圆角按钮与触发颜色变化
<Button x:Name="button1" Content="按钮1" Margin="10,10,0,0" Cursor=&q ...
- WPF圆角按钮例程
<Window x:Class="WpfApp3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/200 ...
- 如何给wpf的按钮添加背景图片
1:简单实用 <Button Height="143" HorizontalAlignment="Left" Margin="30,34,0,0 ...
随机推荐
- Delphi 适合于文本文件的基本操作
- verilog 实现DDS
一.DDS的原理 直接数字频率合成器(DDS),功能是通过输入频率输入字从而实现改变输出信号的频率的功能,它所利用的原理就是虽然对于一段正弦信号来说其幅度值是非线性的,但是其相位的值却是线性增加的,如 ...
- 华为服务器XH628配置软RAID
1. 硬RAID 1.1. 配置准备 本机型号为华为XH628,配有两块400GSSD,12块1.2TSAS盘.其中2块SSD做RAID1为系统盘,12块SAS盘做RAID5, ...
- SVN 安装教程
安装包:http://pan.baidu.com/s/1kTTcbJp 安装步骤看这个博主的就好了: http://www.cnblogs.com/xing901022/p/4399382.html ...
- kotlin面向对象之抽象类、继承、多态
继承: 比较简单,直接看如何使用,这里以父亲与儿子的关系为例: 接着定义儿子并且继承父亲,如下: 是用":"号来继承的,但是此时报错了,看下错误提示: 在kotlin的类并非是人人 ...
- ubuntu下usb抓包方法步骤--usbmon
开发或者调试USB设备相关的工具或者驱动,一个调试的利器就是usbmon抓包. 在ubuntu下使用步骤如下: 1 运行命令 sudo mount -t debugfs none /sys/ke ...
- C#线程中LOCK的意义
学习心得,为的是让新人能理解,高手直接绕~ lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区.如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放. 引用一句 ...
- 树形结构根据最后一位的id匹配整个路径
function recursionTreeId(_arr, _id) { _arr.forEach(item => { if (item.id === _id) { optionArr.uns ...
- spring cache 几个注解解释
转自https://www.cnblogs.com/fashflying/p/6908028.html 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管 ...
- 【leetcode】1273. Delete Tree Nodes
题目如下: A tree rooted at node 0 is given as follows: The number of nodes is nodes; The value of the i- ...