WPF编游戏系列 之二 图标效果
本篇将要实现图标的两个效果:1. 显示图标标签,2. 图标模糊效果。在上一篇中提到Image没有HTML <img>的Title属性(在MSDN中也没找到类似的属性),所以本篇将自行制作一个标签,它的功能是当鼠标移动到图标上方时会显示该图标的Tag说明,并且该图标模糊显示,如下图对比所示。
原始状态 效果状态
![]()
1. 在Home <Image>中加入MouseEnter和MouseLeave事件。
<Image Source="image/home.png" Width="110" Height="110" Tag="My Home"
Canvas.Left="30" Canvas.Top="20" Cursor="Hand"
MouseEnter="Image_BlurEffect_MouseEnter"
MouseLeave="Image_BlurEffect_MouseLeave"></Image>
2. 事件加好了,就要为添加内容了。先看Image_BlurEffect_MouseEnter事件:
private void Image_BlurEffect_MouseEnter(object sender, MouseEventArgs e)
{
//将sender定义为Image对象
Image image = sender as Image;
//创建模糊BlurEffect对象
BlurEffect newBlurEffect = new BlurEffect();
//设定模糊效果值Radius
newBlurEffect.Radius = 5;
//为Image添加Blur效果
image.Effect = newBlurEffect;
//将Image Tag内容传给imageTitle Textblock
imageTitle.Text = " " + image.Tag.ToString() + " ";
//将imageTitle的Border设置为可见
imageTitleBorder.Visibility = Visibility.Visible;
//调整imageTitleBorder的Canvas位置,使其在图标下方显示
Canvas.SetLeft(imageTitleBorder, Canvas.GetLeft(image) + image.Width / 2 - 15);
Canvas.SetTop(imageTitleBorder, 125);
}
private void Image_BlurEffect_MouseLeave(object sender, MouseEventArgs e)
{
Image image = sender as Image;
BlurEffect newBlurEffect = new BlurEffect();
newBlurEffect.Radius = 0;
image.Effect = newBlurEffect;
imageTitleBorder.Visibility = Visibility.Collapsed;
}
上一篇回复中,紫色永恒提到可以使用ToolTipService,首先感谢紫色永恒提供建议。经过测试使用ToolTip可以实现标签的功能(代码如下),而且也不用预设显示效果,但是没法通过Canvas设定其位置,大家可以都学习一下。
XAML:
<Image Source="image/home.png" Width="110" Height="110"
Tag="My Home" Canvas.Left="30" Canvas.Top="20"
MouseEnter="Image_BlurEffect_MouseEnter"
MouseLeave="Image_BlurEffect_MouseLeave"
Cursor="Hand">
<Image.ToolTip>
<TextBlock>My Home</TextBlock>
</Image.ToolTip>
</Image>
C#代码自然就简单多了:
private void Image_BlurEffect_MouseEnter(object sender, MouseEventArgs e)
{
Image image = sender as Image;
BlurEffect newBlurEffect = new BlurEffect();
newBlurEffect.Radius = 5;
image.Effect = newBlurEffect;
}
待续… …
WPF编游戏系列 之二 图标效果的更多相关文章
- WPF编游戏系列 之七 动画效果(2)
原文:WPF编游戏系列 之七 动画效果(2) 上一篇已经对关闭窗口图标进行了动画效果处理,本篇将对窗口界面的显示和关闭效果进行处理.由于所有的动画效果都是针对窗口界面的Canvas,所以 ...
- WPF编游戏系列 之六 动画效果(1)
原文:WPF编游戏系列 之六 动画效果(1) 本篇主要针对界面进行动画效果处理.首先在打开或关闭界面时,使其产生动态效果而不是生硬的显示或消失(如下图).其次在鼠标放到关闭窗口图标上时, ...
- WPF编游戏系列 之一 布局设计
原文:WPF编游戏系列 之一 布局设计 本系列主要使用WPF和C#编写一个简单的小游戏(暂命名XMarket),意在通过该实例进一步学习和体验WPF,也欢迎广大同仁拍砖交流.言归正传,在 ...
- WPF编游戏系列 之九 物品清单再优化
原文:WPF编游戏系列 之九 物品清单再优化 在"第三篇"和"第四篇"中通过用户控件和数据绑定功能对物品清单进行一些优化减少了部分C#代码,但感觉 ...
- WPF编游戏系列 之三 物品清单
原文:WPF编游戏系列 之三 物品清单 本篇将介绍如何通过C#自动生成游戏界面,主要演示点击"My Shop"后如何显示所有物品清单.其中数据源来自于Access 2 ...
- WPF编游戏系列 之八 银行界面及金额校验
原文:WPF编游戏系列 之八 银行界面及金额校验 在前面<WPF编游戏系列 之四 用户控件>一文中通过用户控件创建了"My Shop"中物品列表框.本篇继 ...
- WPF编游戏系列 之四 用户控件
原文:WPF编游戏系列 之四 用户控件 在上一篇<WPF编游戏系列 之三 物品清单>中,对物品清单进行了演示,其中反复用到了同一组控件(如下图),而且 颜昌钢也指出在3.2. ...
- WPF编游戏系列 之五 数据绑定
原文:WPF编游戏系列 之五 数据绑定 在上一篇通过用户控件将重复使用的控件封装为一个控件组,大大减少了C#代码数量,本篇继续对该控件组进行数据绑定,节省为每个控件赋值的工作.对于数据绑 ...
- WPF入门教程系列十二——依赖属性(二)
二. 依赖属性的优先级 由于WPF 允许我们可以在多个地方设置依赖属性的值,所以我们就必须要用一个标准来保证值的优先级别.比如下面的例子中,我们在三个地方设置了按钮的背景颜色,那么哪一个设置才会是最终 ...
随机推荐
- STS 3.6.4 SpringMVC 4.1.6 Hibernate 4.3.8 MySQL
开发环境: Java 1.8 Spring Tool Suite 3.6.4 Spring faramework 4.1.6 Hibernate 4.3.8 Maven 2.9 数据库是MySQL 5 ...
- Android 用MediaRecorder录制视频太短崩的问题
具体表现: 调用MediaRecorder的start()与stop()间隔不能小于1秒(有时候大于1秒也崩),否则必崩. 错误信息: java.lang.RuntimeException: stop ...
- Ajax方法
json的解析: json是js原生的内容,也就意味着js可以直接取出json对象中的数据. 案例一: var persons = [ {"firstname":"张&q ...
- node转发formdata
router.post('/keUpload', checkLogin, setAccessControlAllow, (req, res, next) => { const busboy = ...
- 【转】Boost.Python
http://edyfox.codecarver.org/html/boost_python.html Boost.Python 是 Boost 中的一个组件,使用它能够大大简化用 C++ 为 Pyt ...
- 动态创建Fragment
在android3.0之前.每创建一个界面就要新创建一个activity. 在3.0之后引入了Fragment.相当于一个轻量级的activity.不须要在清单文件配置. 先来看下怎样创建和使用Fra ...
- 【BZOJ 1022】 [SHOI2008]小约翰的游戏John
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1022 [题意] [题解] 和这题类似http://blog.csdn.net/harl ...
- 6LoWPAN - Transmission of IPv6 Packets over IEEE 802.15.4 Networks
6LoWPAN covered topics include the following: Frame format for transmission of IPv6 packets Method ...
- 在 Oracle 中新建 SDE 用户
--1.创建用户(SDE)和密码(SDE) CREATE USER SDE IDENTIFIED BY SDE --2.创建表空间(SDE) CREATE TABLESPACE SDE DATAFIL ...
- Python 格式化输出 —— 小数转化为百分数
比如将 0.1234 转化为 12.34% 的形式: rate = .1234 print('%.2f%%' % (rate * 100)) 第一个百分号和 .2f 相连,表示浮点数类型保留小数点后两 ...