嵌入式UI编程,如何画滚动条:DrawScrollBar

在嵌入式系统的UI中,如果条目太多,需要一个类似于Windows风格的滚动条,条目越多,滚动条越小... 这里介绍了一个实用的DrawScrllBar的函数,用C完成




根据项目的多少,决定Bar的大小,项目越多,Bar越小
根据当前选择的项目来决定Bar的位置(高度)
另:Rectangle()由一个画矩形的函数

/*****************************************************
Funtion          :    DrawScrollBar
Descriptions     :    Bar Size (count)
Inputs           :    selected = current selected item index,
                      count    = total count
Outputs          :    None
******************************************************/


void DrawScrollBar(int selected,int count)
{
  int barSize,scrollYP;

  if( count < MAX_BAR_SIZE )
  {
     barSize = (MAX_BAR_SIZE*MIN_BAR_SIZE)/count;

     if(barSize < MIN_BAR_SIZE)
     {
        barSize = MIN_BAR_SIZE;
     }
    
     if(selected == (count -1 ))
     {
        scrollYP = BAR_END_Y - barSize;
     }
     else
     {
         scrollYP = BAR_START_Y  + ( selected * (MAX_BAR_HEIGHT - barSize)) /count ;
     }
  }
  else
  {
     barSize  = MIN_BAR_SIZE;
     scrollYP = BAR_START_Y +( selected * MAX_BAR_SIZE )/count;
  }

  if ( scrollYP > prevScrollYP)
  {
    Rectangle(BAR_LEFT_X,prevScrollYP,BAR_RIGHT_X,scrollYP,0,0,0,1);   //Clear
  }
  else
  {
    Rectangle(BAR_LEFT_X, scrollYP+barSize, BAR_RIGHT_X, BAR_END_Y , 0,0,0,1);
  }  
    
  Rectangle(BAR_LEFT_X,scrollYP,BAR_RIGHT_X,scrollYP+barSize,0,0,0xdc,1);
  prevScrollYP = scrollYP;
}



作者:greg   更新日期:2005-01-18
来源:本站特稿   浏览次数:

相关文章

相关评论   发表评论