热点推荐
ZOL首页 > 软件资讯 > 软件学院 >

在 Visual C# .NET 中建立平滑的进度条(2)

在 Visual C# .NET 中建立平滑的进度条

asp社区 【转载】 2008年01月27日 15:04 评论

public int Maximum
{
get
{
return max;
}

set
{
   // Make sure that the maximum value is never set lower than the minimum value.
if (value < min)
{
min = value;
}

max = value;

   // Make sure that value is still in range.
if (val > max)
{
val = max;
}
   // Invalidate the control to get a repaint.
this.Invalidate();
}
}

public int Value
{
get
{
return val;
}

set
{
int oldValue = val;
   // Make sure that the value does not stray outside the valid range.
if (value < min)
{
val = min;
}
else if (value > max)
{
val = max;
}
else
{
val = value;
}

   // Invalidate only the changed area.
float percent;

Rectangle newValueRect = this.ClientRectangle;
Rectangle oldValueRect = this.ClientRectangle;

   // Use a new value to calculate the rectangle for progress.
percent = (float)(val - min) / (float)(max - min);
newValueRect.Width = (int)((float)newValueRect.Width * percent);

   // Use an old value to calculate the rectangle for progress.
percent = (float)(oldValue - min) / (float)(max - min);
oldValueRect.Width = (int)((float)oldValueRect.Width * percent);

Rectangle updateRect = new Rectangle();

   // Find only the part of the screen that must be updated.
if (newValueRect.Width > oldValueRect.Width)
{
updateRect.X = oldValueRect.Size.Width;
updateRect.Width = newValueRect.Width - oldValueRect.Width;
}
else
{
updateRect.X = newValueRect.Size.Width;
updateRect.Width = oldValueRect.Width - newValueRect.Width;
}

updateRect.Height = this.Height;

   // Invalidate the intersection region only.
this.Invalidate(updateRect);
}
}

public Color ProgressBarColor
{
get
{
return BarColor;
}

set
{
BarColor = value;

   // Invalidate the control to get a repaint.
this.Invalidate();
}
}

private void Draw3DBorder(Graphics g)
{
int PenWidth = (int)Pens.White.Width;

g.DrawLine(Pens.DarkGray,
new Point(this.ClientRectangle.Left, this.ClientRectangle.Top),
new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Top));

g.DrawLine(Pens.DarkGray,
new Point(this.ClientRectangle.Left, this.ClientRectangle.Top),
new Point(this.ClientRectangle.Left, this.ClientRectangle.Height - PenWidth));

g.DrawLine(Pens.White,
new Point(this.ClientRectangle.Left, this.ClientRectangle.Height - PenWidth),
new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Height - PenWidth));

g.DrawLine(Pens.White,
new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Top),
new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Height - PenWidth));
}



  3、在 Build 菜单中,点击 Build Solution 来编译整个项目。
1 2 下一页
本文导航
  • 第1页:在 Visual C# .NET 中建立平滑的进度条(2)
频道热词:微信  手机QQ  12306  
视觉焦点
新浪微博