问题描述
我接触c#不久,想做一个自定义的进度条控件,要求是能够实现平滑渐变效果(如从左边的红色平滑渐变到右边的绿色),如果可能的话,增加一个渐变方式的属性,从中可以选择两端的颜色。我想问一下设计的思路。谢谢了
解决方案
解决方案二:
<html><head><title></title><scriptlanguage="javascript">//开始处理functionBeginTrans(msg){WriteText("Msg1",msg);}//设置进度条进度functionSetPorgressBar(msg,pos){ProgressBar.style.width=pos+"%";WriteText("Msg1",msg+"已完成"+pos+"%");}//处理结束functionEndTrans(msg){if(msg=="")WriteText("Msg1","完成。");elseWriteText("Msg1",msg);}//设置时间信息functionSetTimeInfo(msg){WriteText("Msg2",msg);}//更新文本显示信息functionWriteText(id,str){varstrTag='<fontface="Verdana,Arial,Helvetica"size="2"color="#ea9b02"><B>'+str+'</B></font>';if(document.all)document.all[id].innerHTML=strTag;}</script></head><body><tablealign="center"style="height:100%"><trstyle="height:45%"><td></td></tr><tr><td><divid="Msg1"style="height:16px;"><fontface="Verdana,Arial,Helvetica"size="2"color="#ea9b02"><b>正在加载...</b></font></div><divid="ProgressBarSide"style="width:300px;color:Silver;border-width:1px;border-style:Solid;"><divid="ProgressBar"align="center"style="height:20px;width:0%;background-color:#316AC5;"></div></div><divid="Msg2"style="height:16px;"><fontface="Verdana,Arial,Helvetica"size="2"color="#ea9b02"><b></b></font></div></td></tr><trstyle="height:50%"><td></td></tr></table></body></html>
usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.IO;usingSystem.Net;publicpartialclass_Default:System.Web.UI.Page{publicstaticstringresponse;protectedvoidPage_Load(objectsender,EventArgse){DateTimestartTime=System.DateTime.Now;DateTimeendTime=System.DateTime.Now;//根据ProgressBar.htm显示进度条界面stringtemplateFileName=Path.Combine(Server.MapPath("."),"ProgressBar.htm");StreamReaderreader=newStreamReader(@templateFileName,System.Text.Encoding.GetEncoding("gb2312"));stringhtml=reader.ReadToEnd();reader.Close();Response.Write(html);Response.Flush();System.Threading.Thread.Sleep(1000);stringjsBlock;//处理完成response+="<script>BeginTrans('开始处理...');</script>";Response.Write(jsBlock);Response.Flush();System.Threading.Thread.Sleep(1000);//根据处理任务处理情况更新进度条for(inti=1;i<=100;i++){System.Threading.Thread.Sleep(20);jsBlock="<script>SetPorgressBar('"+"A"+i.ToString()+"','"+i.ToString()+"');</script>";Response.Write(jsBlock);Response.Flush();}//处理完成jsBlock="<script>EndTrans('处理完成。');</script>";Response.Write(jsBlock);Response.Flush();//用时endTime=DateTime.Now;jsBlock="<script>SetTimeInfo('用时"+GetTimeSpan(startTime,endTime)+"');</script>";Response.Write(jsBlock);Response.Flush();}protectedstringGetTimeSpan(DateTimestartTime,DateTimeendTime){stringtimeSpan=string.Empty;TimeSpants=endTime-startTime;if(ts.Days>0)timeSpan+=ts.Days.ToString()+"天";if(ts.Hours>0)timeSpan+=ts.Hours.ToString()+"小时";if(ts.Minutes>0)timeSpan+=ts.Minutes.ToString()+"分钟";if(ts.Seconds>0)timeSpan+=ts.Seconds.ToString()+"秒";returntimeSpan;}}
解决方案三:
remex著于2007-7-197:31:21本文介绍在.netframework下,如果做一个Vista风格进度条的用户控件。该文使用的技术是GDI+。ivanx著于2007-8-299:23:59以前,大家都采用一个进度条显示程序正在加载。不过,这已经不再流行了。看看SQLServer、WindowsMedia、Encarta2006或Firefox/IE7加载页面时,都是采用一个不断旋转的圈,以显示程序正在载入。本文实现...还有很多自己看吧