类似QQ登陆的过度页面

1、还是先上图

                        

2、其实动来动去的滚动条就是Gif图片,而在.net cf 中播放Gif动画似乎有点麻烦,祥见微软的例子。(.NET Compact Framework-based Animation Control Sample)找不到的可以跟我要。

而还有一种更简单的办法那就应用WebBrowser播放Gif,我们知道WebBrowser是支持HTML格式的,所以这个办法也是可行的(这里要谢谢冯峰 -Appleseeker,因为之前我做WebBrowser内容定位的时候是他告诉我WebBrowser读取HTML文件这个办法的),而需要注意的是我们还得用用上Panel,让WebBrowser的高度比Panel的高,这样就可以避免了首次加载时的WebBrowser的加载标志了,然后再把要播放的内容放到一个Html文件中。上下两个闪屏的效果,只要创建两个线程执行就可以了,上面的闪屏文字可以根据你登陆的事件去变换,下面的我是让它不断循环执行的。

类似这样的登陆过度界面,唯一的难题就是在取消登陆和当验证不通过时让程序自动返回登陆页面,这个问题花了我很多的时间,点击按钮取消登陆的比较好解决,不过线程不能终止,我只能是通过变量去判断程序是否需要跳出,所以当点击取消登陆时会有一点延迟线程才被取消,而想让验证不通过提示后直接返回登陆界面时,要用到页面对象传递,其实就是把过度页面当成主界面,登陆界面是Show()出来的,可以这样做的原因是因为登陆界面的事件要嘛登陆返回过度页面,要嘛退出整个应用程序。对于线程终止这方面的知识还是不够,现在也有时间可以好好看看了。

3.上些参考代码

 

ContractedBlock.gif ExpandedBlockStart.gif Code
ExpandedBlockStart.gifContractedBlock.gif        string[] messages = "手机拍了照片录制了视频,可以跟大家一起分享,试试文件传输功能。""您可以通过录音机快速传达语音信息。""选择发送邮件,直接拨打电话、发送短信等实用小功能。""发送邮件的同时,内容可以同时发送短信。""***********""**************};
        private string GetBottomMessage()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
string m_stranswer;
            m_stranswer 
= messages[m_value];
            m_value
++;
            
return m_stranswer;
        }

        
private void OverPage_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            webBrowserScroll.Url 
= new Uri(@"file://" + Bussiness.Global.ApplicationDirectory + "Over.htm");
            UserLogin();
            ShowMessage();
        }

        
private void UserLogin()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            ThreadPool.QueueUserWorkItem(
new WaitCallback(UserLogin));
        }

        
private void ShowMessage()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            ThreadPool.QueueUserWorkItem(
new WaitCallback(GetBottomMessage));
        }

        
private void GetBottomMessage(object o)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
while (m_value < messages.Length)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                LabelBottemMessage.Invoke(
new UpdateStateBottomDelegate(UpdateBomState), GetBottomMessage());
                
if (IsCancel || IsCreateConnectionValue == 1)
                    
return;
                Thread.Sleep(
3000);
                
if (IsCancel || IsCreateConnectionValue == 1)
                    
return;
                
if (m_value == (messages.Length - 1))
                    m_value 
= 0;
            }

        }

 

最近的项目差不多进入尾声,这期间增加了很多的新的实用的功能,期间遇到了很多的问题,幸好一个个都解决了。现在公司移动开发的项目会包装成产品发布(e讯---满好听的名字),很期待开发的东西能够让更多的人用上^_^。

转载于:https://www.cnblogs.com/datong/archive/2008/12/13/1354203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值