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

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

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

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

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

一、必要库文件的引入

需要引入3个库文件:Microsoft.WindowsAPICodePackMicrosoft.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特性功能也很值得学习和使用,希望本篇博客能够帮助到你。






发布了66 篇原创文章 · 获赞 163 · 访问量 15万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览