VC用MFC开发的圆形进度条控件

DownLoad Src

VC用MFC开发的圆形进度条控件

visualsan@yahoo.cn NUAA zss

在NBA2007游戏里,还有很多科幻电影里,经常可以看到圆形进度条。有的用来显示导弹发射的准备时间,有的用来倒计时。如图所示。模仿该样式,用MFC实现了一个Activex控件。叙述如下:

VC用MFC开发的圆形进度条控件

该控件的编写思路是:

    根据当前值,计算圆弧角度,然后用CShape(一个图形绘制类)绘制扇形,对于连续圆弧则可以一次绘制,而对于间断圆弧,则须根据分段数分别计算角度,然后在分别填充。代码如下:

void CCircleProgressCtrl::Draw1(CDC *pDC,CRect rt,double r1,double r2)
{
 POINT pt=rt.CenterPoint();
 m_shape.DrawConeGradientSideToSide(pDC,pt,r1,r2,360.0-GetAngle(),GetAngle()-

 m_startAngle,startfgcolor,endfgcolor);
}

void CCircleProgressCtrl::Draw2(CDC *pDC,CRect rt,double r1,double r2)
{
 POINT pt=rt.CenterPoint();
 double st;
 int i;
 int d=GetAngle()/angPerSubs;
 for (i=0;i<d;i++)
 {
  st=angPerSubs*double(i)+m_startAngle;
  m_shape.DrawConeGradientSideToSide(pDC,pt,r1,r2,306.0-st,angPerSubs-

  m_dsubs,startfgcolor,endfgcolor);
 }

}
void CCircleProgressCtrl::Draw3(CDC *pDC,CRect rt,double r1,double r2)
{
 POINT pt=rt.CenterPoint();
 double st;
 int d=GetAngle()/angPerSubs;
 {
 for (int i=0;i<d;i++)
 {
  st=angPerSubs*double(i)+m_startAngle;
  m_shape.DrawConeGradientSideToSide(pDC,pt,r1,r2,306.0-st,angPerSubs-

  m_dsubs,startfgcolor,endfgcolor);
 }
 double la=GetAngle()-double(d)*angPerSubs;
 if(la>m_dsubs)
     m_shape.DrawConeGradientSideToSide(pDC,pt,r1,r2,306.0-st-m_dsubs,-

     la+m_dsubs,startfgcolor,endfgcolor);
 }

}

运行情况如下:

VC用MFC开发的圆形进度条控件

visualsan@yahoo.cn  NUAA ZSS 2009.9.24

VC用MFC开发的圆形进度条控件

 

控件主要属性如下:

VC用MFC开发的圆形进度条控件

style:样式,其值为0,1,2 。0,1表示绘制间断扇形,2表

      示绘制连续扇形。

dot:小数点位数

division:扇形段数

CurrentValue:当前值,若大于最大值,则扇形绘制整园,若

      小于最小值,则不绘制扇形。

unit:单位,用于输出显示,可以选择不输出。

maxValue,minValue:最大值,最小值。

startAngle:起始角。

bkcolor:背景颜色

colorBegin:扇形渐变颜色其实值。

colorEnd:扇形渐变颜色终止值。

textColor:文字颜色。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值