zoukankan      html  css  js  c++  java
  • 五一,给心情放个假酷狗电台桌面版

    平时闲下来的时候总是喜欢听听歌,放松放松心情。也不知道哪些歌好听,所以总是用酷狗电台听歌。所以,一套“复杂”的流程就开始了:双击浏览器→输入百度→回车→输入酷狗电台→点击→最小化浏览器→OK。无奈,这个过程太复杂了,作为程序员,为何不让这套“复杂”的流程变得简单一些呢。好!马上动手!

     

    先来show一下界面效果:

     

    大致思路是将这个页面放入webbrowser控件中,但是该如何在webbrowser控件中来如何定位这个界面区域呢?之前对webbrowser控件也不是很理解,好吧,先从webbrowser控件下手。经过在网上的一番搜索,终于找到了解决办法。

    但又有一个问题出现了,有时候因为网速慢的缘故,页面无法及时显示出来,显示下面的这样的效果:

     

    这也太难看了吧!好吧,那就对页面的整个加载过程进行一些分析看看,居然发现了一个规律。

     

    分析过程:

    一:页面的定位

     

    以下代码可以设置webBrowser控件的滚动条位置:

    HtmlDocument document = this.webBrowser1.Document;//获取控件中的html文档,类似于网页中的document对象。

     document.Window.ScrollTo(320, 1520);//将文档窗体滚动到指定位置,320表示横坐标,1520表示纵坐标,这都可以设置的。

     

    二:气泡提示

    1.欢迎收听酷狗电台。。。

    2.努力加载中,请稍后。。。

    3.加载完毕,即将播放。。。

     

    webBrowser1_Navigating   页面加载中  

    webBrowser1_DocumentCompleted   页面加载完毕后

     

    定义变量来统计加载和加载完毕的次数:

    ing  1 2   3  4            5 6 7 8 9 10 11  12 13  14  15 16 17

    end      (1)      (1) 2 3                                                               4 5 6  过程完毕 (1时调整页面位置 4的时候就在加载音乐  5时开始播放  6时将整个背景显示出来)

     

    利用timer控件判断加载次数来决定提示信息为什么

     

    ing  1 提示  欢迎收听。。。

    ing  5 提示   努力加载中。。。

    end 4 提示   即将播放。。。(以防网速影响加载速度)

     

    NotifyIcon.ShowBalloonTip 方法 (Int32)

    如果这两个气球提示来自同一应用程序,则第一个气球提示在再次调用 ShowBalloonTip 方法时立即关闭。 某些情况下,第二个气球将在第一个气球的顶部打开。

     

    附部分主要源码:

     

      private void KuGou_Load(object sender, EventArgs e)
            {
                //设置标题背景
                labText.BackColor = Color.Transparent;
                //初始不显示pannel
                panel1.Visible = false;
                //页面加载之前,气泡提示
                this.notifyIcon1.ShowBalloonTip(500"酷狗电台-桌面版-Babycool""欢迎使用酷狗电台-桌面版-Babycool", ToolTipIcon.Info);
                //http://www.cnblogs.com/babycool
                
    //导航
                webUrl.Navigate("http://app.baidu.com/KugouRadio");
                //初始化b的值
                b = false;
            }
     
     
    //变量 计数 
            
    //统计加载页面文档的次数
            int ing = 0;
            //统计文档加载完成的次数
            int end = 0;

            //文档全部加载后执行
            private void webUrl_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                //控制滚动条,设定页面的显示位置
                HtmlDocument docu = this.webUrl.Document;
                docu.Window.ScrollTo(132210);
                //http://www.cnblogs.com/babycool
                
    //每执行一次  计数+1
                end++;
                //判断
                if (end == 4)
                {
                    this.notifyIcon1.ShowBalloonTip(1000"酷狗电台-桌面版-Babycool""加载完毕,开始播放……", ToolTipIcon.Info);
                }
            }

            //在导航发生前执行
            private void webUrl_Navigating(object sender, WebBrowserNavigatingEventArgs e)
            {
                //每执行一次  计数+1
                ing++;
                //www.cnblogs.com/babycool
                
    //判断
                if (ing == 5)
                {
                    this.notifyIcon1.ShowBalloonTip(1000"酷狗电台-桌面版-Babycool""努力加载中,请稍后……", ToolTipIcon.Info);
                }
            }

     

    为了界面的美化效果,又将form窗体变成了无边框窗体,在顶部加入了拖入的效果。之前在看同学玩地下城的时候看到的这种效果,鼠标移上显示,移开隐藏,觉得特炫。现在实现了才发现还挺简单的嘛!不过效果是达到了,感觉还是不太满意,鼠标在移动时会出现闪动的现象,还需要做进一步的修改。

     

    最后,还有一个很让人纠结的问题,众所周知,winform中的webbrowser控件占用的内存太大了,仅这么个150k的小程序运行起来就占用了将近50M的内存。所以,下一步是希望能够找到一个可以替代webbrowser控件的第三方控件,来降低内存的占用。

       软件不断更新中,敬请期待。。。

     附下载链接:http://www.kuaipan.com.cn/file/id_5028779638390793.htm

     

  • 相关阅读:
    Codeforces 700A As Fast As Possible(二分答案)
    BZOJ 1196 [HNOI2006]公路修建问题(二分答案+并查集)
    Codeforces 701C They Are Everywhere(Two pointers+STL)
    Codeforces 430B Balls Game(Two Pointers)
    CSU 1812 三角形和矩形
    CSU 1804 有向无环图
    CSU 1803 2016
    CSU 1808 地铁
    CodeForces 707B Bakery
    CodeForces 707A Brain's Photos
  • 原文地址:https://www.cnblogs.com/babycool/p/2477829.html
Copyright © 2011-2022 走看看