首 页 | 新 闻 | 文 档 | 代 码 | 工 具 | 论 坛

Mp4Tech 首页  >  文 档  >   应用开发
 
 

嵌入式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
来源:upsdn

 


联系我们
便携式多媒体技术中心
All Rights Reserved