{S0}简介
我总是喜欢在Firefox右上角的小圆形进度指示器当加载一个页面,但我找不到任何喜欢使用我的项目,所以我做了一个自己。使用代码
使用的控制是很简单的的,也有只有四个属性和两种方法,您需要知道:CircleColor - 变化的基本颜色的圆圈CircleSize - 改变圆的直径,这个值是相对的,0.1和1.0之间的控制规模和范围成正比自动启动 - 设置如果动画应该会自动启动AnimationSpeed - 设置动画speednbsp;NumberOfCircles - 设置的最大数量的控制,可在绘制各界,该值必须大于0NumberOfVisibleCircles - 设置在控制中可见的圆的数目,必须始终小于或平等的NumberOfCircles百分比 - 设置可以在控制中心中的一个百分比值,此值必须介于0和100ShowPercentage - 设置一个值,允许显示或隐藏的百分比值ShowText - 设置一个值,可以显示控制文本TextDisplay - 这个属性只是一个辅助属性,它允许启用或禁用文本和一个属性的百分比
旋转 - 设置控制旋转的方向,
启动动画,只需调用start():progressIndicator.Start();
和阻止它,只需调用stop():{C}控制代码绘制的圆圈
圆圈周围绘制一个周长与直径的控制。由于圆的数量是可变的,我们需要计算每圈的旋转角度。各界的最低数量必须是1,没有上限控制。使用调用RotateTransform旋转绘画位置作为一个参数传递的角度绘制的圆圈。顺序绘制的圆圈,在圆的颜色的Alpha量减少,使控制的褪色效果。以动画,控制重绘的时间间隔由一个地方总是在不断变化较暗的圆圈的位置,让运动的错觉。控制,可顺时针旋转或逆时针旋转方向乘以1或-1的角度来实现。检查代码,发现这条线是:
这段代码设置每个阶段乘以一个递增的值是由内部定时器节角旋转的开始位置。 NumberOfVisibleCircles财产是指在一个给定的的时间显示界的最大数量。此属性确定在控制绘制的各界的有效数量,这是从NumberOfCircles属性的不同。这最后一个属性集可以得出各界的数量,就像是预留空间为界,即使我们不使用它们。这使得紧缩各界一起可见各界的数量减少时的效果相反的效果时,增加。绘制的百分比和文本
的百分比是一个可选功能,因为主要目的是显示一个进度值,但东西是怎么回事。百分比文本不显示默认情况下,甚至没有原来的想法。无论如何,我已经要求新功能的人的一些意见,并给予一些很好的想法,我决定更新的控制和实施一些新的特点。其中之一是这一个。通过百分比属性的百分比,并可以启用和禁用从ShowPercentage属性。 Text属性如下同样的道理。这不是原计划的一部分,但SohjSolwin建议,可以在某些情况下有用,我们从来不知道何时何地将使用这种控制。所以,从这个版本,控制有能力吸取他们都如下所示:
为什么两个百分比和文字?string percent = GetDrawText();
if (!string.IsNullOrEmpty(percent))
{
SizeF textSize = e.Graphics.MeasureString(percent, Font);
float textX = (Width / 2.0F) - (textSize.Width / 2.0F);
float textY = (Height / 2.0F) - (textSize.Height / 2.0F);
StringFormat format = new StringFormat
{
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center
};
RectangleF rectangle = new RectangleF(textX, textY, textSize.Width, textSize.Height);
using (SolidBrush textBrush = new SolidBrush(ForeColor))
{
e.Graphics.DrawString(percent, Font, textBrush, rectangle, format);
}
}
当控制被用来显示进度,itnbsp;有可能是什么,并在同一时间进度百分比显示消息。他们两人都是独立的,有不同的用途。即使他们绘制在同一时间在内部,如果我只需要改变的百分比值,它更容易做到这一点:progressIndicator.Percentage = 50.25F;
,并让控制添加quot;%quot;签署和做其他格式。这是比这个简单,更加直观和:
另一方面,百分比属性不会允许文本,因此它需要另一个字段来设置文本绘制。最后显示的字符串,是建立在下面显示的方法使用的文字和百分比属性,方法检查_showText和_showPercentage领域的价值观和他们的价值观为基础构造一个字符串,返回一个空字符串,如果这两个领域都设置为false。private string GetDrawText()
{
string percent = string.Format(CultureInfo.CurrentCulture, "{0:0.##} %", _percentage);
if (_showText && _showPercentage)
return string.Format("{0}{1}{2}", percent, Environment.NewLine, Text);
if (_showText)
return Text;
if (_showPercentage)
return percent;
return string.Empty;
}
控制代码的其余部分很短,简单易懂,所以我决定删除,只留下片断的文章。如果您有任何疑问,请发表评论。兴趣点
没有什么更多的。这是进度条已经很长一段时间没有作出任何的进展情况,特别是在有用的,我们要传递的消息,正在做的事情是。晚间,它已计划的乐趣。 :)积分
我想感谢他的旋转和可见各界的部分代码,我在此版本稍作修改中包括的贡献SohjSolwin,也为文本绘制的建议,而不是只显示百分比。历史第二年11月,2008年:战后初期六月二十六日,2010:更新到1.1版,新功能:可变数目的圆圈(第1版有8个固定)它可以得出一个百分比值7月1日起,2010年更新到1.2版,新功能:旋转可以顺时针或逆时针它可以在除的百分比值绘制一个文本字符串可见各界的可变数目(1.1版有一个固定数量的8)| Nitoc3