C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)

依旧是在扩展WMP播放器功能时所遇到的问题,我想要实现Windows7所带来的任务栏特性,直接看图。

以网易云音乐为例,①能够在任务栏的略缩图显示专辑封面(或则其他想要的略缩图)②能够有快捷按钮。当然这只是我暂时想要实现的功能,比如还有在任务栏显示进度条状态,本文不涉及,如果感兴趣这里倒是有个不错的Demo可供参考学习https://my.oschina.net/Tsybius2014/blog/716122。

下面我就直接开始,我还是用之前写的WMP播放器做为演示,为了更直观和简洁,不实现按钮的功能细节部分

一、必要库文件的引入

需要引入3个库文件:Microsoft.WindowsAPICodePack、Microsoft.WindowsAPICodePack.Shell、PresentationCore

以及命名空间:using Microsoft.WindowsAPICodePack.Taskbar;

前两个库文件需要下载:http://download.csdn.net/download/wanghanltd/2176242

添加完成后:

二、创建任务栏按钮以及单击事件

首先是要添加窗口的Form_Shown事件,在该事件中进行创建按钮。
private void Form1_Shown(object sender, EventArgs e)
{
//播放按钮
ThumbnailToolbarButton btnPlayPause = new ThumbnailToolbarButton(Properties.Resources.Play, "Play");
btnPlayPause.Enabled = true;
btnPlayPause.Click += new EventHandler(btnPlayPause_Click);
//下一首按钮
ThumbnailToolbarButton btnNext = new ThumbnailToolbarButton(Properties.Resources.Next, "Next");
btnNext.Enabled = true;
btnNext.Click += new EventHandler(btnNext_Click);
//上一首按钮
ThumbnailToolbarButton btnPre = new ThumbnailToolbarButton(Properties.Resources.Pre, "Previous");
btnNext.Enabled = true;
btnPre.Click += new EventHandler(btnPre_Click);
//添加按钮
TaskbarManager.Instance.ThumbnailToolbars.AddButtons(this.Handle, btnPre, btnPlayPause, btnNext);
//裁剪略缩图,后面提到
TaskbarManager.Instance.TabbedThumbnail.SetThumbnailClip(this.Handle, new Rectangle(AxWmp.Location, AxWmp.Size));
}
//这里只做效果演示,不实现功能
void btnPlayPause_Click(object sender, EventArgs e)
{
MessageBox.Show("播放");
}
void btnPre_Click(object sender, EventArgs e)
{
MessageBox.Show("上一首");
}
void btnNext_Click(object sender, EventArgs e)
{
MessageBox.Show("下一首");
}

至于为什么要放在Form_Shown事件中,这点我还太清楚,或许是和窗口的绘制顺序有些关系吧。绑定按钮的单击事件时要是用<ThumbnailButtonClickedEventArgs>进行强制转型。最后将三个按钮完成添加。

看看效果:
点击按钮后的效果:

三、裁剪想要的略缩图

不对略缩图进行裁剪,默认将得到整个窗口的略缩图,就会显得不美观也看不出展示效果如下图:
所以在有需要的情况下,我们需要对略缩图进行裁剪,裁剪的方法比较简单使用一个函数方法就能实现。
private void SetTaskbarthumbnail()
{
//设定裁剪区域坐标为AxWmp控件的X、Y、宽、高
TaskbarManager.Instance.TabbedThumbnail.SetThumbnailClip(this.Handle, new Rectangle(AxWmp.Location.X, AxWmp.Location.Y, AxWmp.Size.Width, AxWmp.Size.Height));
}

可以在Form_Show或则窗口更新时,重新设置缩略图的显示位置。

现在就完成了我们所需要的效果,当然你也可以自己把略缩图的位置设置到专辑封面的PictureBox,或则其他……

实现起来还是非常简单的,还有jumpList与任务栏状态提示等Window7特性功能也很值得学习和使用,希望本篇博客能够帮助到你。

C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)相关推荐

  1. Windows7 任务栏功能的开发

    此篇文章为原创,禁止转载 此篇文章仅限于C++,托管代码开发请参考Windows API Code Pack for the Microsoft .NET Framework. 本文参考至: MSDN ...

  2. bootstrapV4.6.0 - 导航栏开发 (案例篇)

    bootstrapV4.6.0 - 导航栏开发 (案例篇) 经验点: 导航栏背景色 ((全window宽度)); 导航栏字体大小设置: 导航栏背景色设置: 导航栏下拉菜单的下拉效果(click改为ho ...

  3. 电脑点击计算机只能在任务栏显示桌面,windows7任务栏显示桌面按钮不见了怎么办?...

    习惯了在使用windows xp系统时候,经常用到任务栏的快速显示桌面按钮,但安装windows7系统后,会发现这个按钮不正常了,当电脑同时打开多个窗口时,想回到桌面就比较麻烦,需要将所有已经打开的窗 ...

  4. 鸿蒙版瑞幸咖啡开发日记(三)购物车结算栏开发

    鸿蒙版瑞幸咖啡开发日记之已点咖啡结算栏开发 1.整体设计思路 2.购物车结算栏布局设计 2.1 右侧购物车图标 2.2 购物车结算栏 2.3 已点咖啡数量圆圈 2.4 已点咖啡模板 这里我实现的效果其 ...

  5. 微信小程序 自定义导航栏,只保留右上角胶囊按钮

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. navigationStyle 导航栏样式,仅支持以下值: default 默认样式 custom 自定义导航 ...

  6. Application Desktop Toolbars 桌面工具栏

    Application Desktop Toolbars 桌面工具栏(1) An application desktop toolbar (also called an appbar) is a wi ...

  7. win11点击任务栏音量、无线、电池按钮无反应

    win11才发布,系统会有很多bug,比如点击任务栏音量.无线.电池按钮无反应,可以通过联想一个"关闭/启用window10咨询和兴趣工具"插件就可以解决. 点击链接 https: ...

  8. chrome点击书签栏书签_在Google Chrome浏览器中使用工具栏按钮访问您的书签

    chrome点击书签栏书签 Would you love to reduce the Bookmarks Toolbar to a single button in Chrome and have t ...

  9. AutoCAD二次开发三种添加插件按钮的方法

    在上一篇关于AutoCAD的文章中,我将很多关于CAD的博客相关资源进行了说明,这一篇文章我将介绍如何在AutoCAD中的ribbon中添加相应的按钮.就是下面这种按钮: PS:在开发中我们最好使用中 ...

最新文章

  1. SVM为什么采用间隔最大化?SVM为什么将原始问题转换为其对偶问题?
  2. 国内丨人工智能(AI)引发的中国经济新动能
  3. OpenWrt-DreamBox 20120201下设置二级路由
  4. MongoDB存储文件之GridFS
  5. 工厂设计模式和策略设计模式_设计模式:策略
  6. Java——操作集合的工具类:Collections
  7. binlog2sql使用总结
  8. DHCP+VTP(实验讲解+配置)
  9. (99)FPGA ROM实现(V实现)
  10. ide循环执行用例 selenium_Selenium Web自动化Page Object设计模式——循环执行测试用例...
  11. 应用COMSOL Multiphysics分析水平井压裂裂缝应力干扰现象
  12. django:自动生成接口文档
  13. 两位共阳极数码管c语言,89c51驱动两位共阳极数码管倒计时显示程序,60秒到30秒能实现,但从30秒到90秒不能实现,请高手帮忙!...
  14. hive 中创建表的三种方式
  15. Python趣味篇:字符串中的趣味瞬间
  16. 好人品的八个标准,你有几个?
  17. 用库卡机器人编程写字_KUKA机器人的操作与基本运动编程(学员必备)
  18. ReactNative ./gradlew assembleRelease打包失败Duplicate file
  19. Win10 取消百度输入法 Shift+Space 全角半角切换
  20. PTA(三十三)面向对象程序设计 第五章 作业 7-4 分钟秒钟的时间相减 (30 point(s))

热门文章

  1. 顺序表的顺序存储表示
  2. Excel同一单元格多数据如何求平均数
  3. 多路复用,讲的很明白
  4. Hugging Face(1)——Transformer Models
  5. Python到底是干啥的?
  6. TensorFlow-神经网络初体验
  7. 在线教育项目02_前端知识(es6、vue)
  8. db2 replace函数的用法_48R软件数据的基本处理之删除重复数据(duplicated()、unique()、distinct()函数)...
  9. Android-内存泄露知识详解
  10. 计算机网络:BGP路由协议