滚动字幕制作C语言示例
滚动字幕设计是程序界面设计方式之一,绘出方法详见下面设计的源码。我是用myspringc语言在手机上编写和测试的。
MySpringC不仅可以编写简单的C语言程序,而且它能读取手机中各种传感器的数值,控制各种多媒体设备,从而实现让普通用户用C语言控制手机,编写出意想不到的、适合自己使用的应用。
v.2.7是目前的完善版本。下面的代码就是用它在安卓手机上编写的,可制作成安卓手机桌面app应用程序。此样例可复制黏贴到编译器直接使用,亦可用VB6,C++ , java 改写。
MySpringC语言应用示例源码:
//**** 窗口 按钮 文件菜单 设计 *********
//**** 滚动字幕设计
Canvas cs;
string sBarDes[10];
int nBarId[10];
string sMenu[50];
int nMenu[50];
float pi=3.1415926535;
float src[4]; //ClearDraw (cls) clear screen
string s,ss,ss1,ss2,ss3;
float x0,y0,x1,y1,x2,y2,x3,y3,x4,y4;
float sx,sy,px,py;
int dx,dy;
float sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4; //draw
float a,L,L1,d,r; //d degree
int btw,bth;
int drag[9];
FileInput filebox;
string fname; //filename
int picw,pich;
int nOldFun;
int size[2];
double sn;
int i,j,n,t,k; //t = times
string s1,s2,s3,s4,s5,s6,s7,s8; //text $
string s9,s10,s11,s12,s13,s14,s15; //text $
main(){
setDisplay(1);
cs.SetBackground(205,205,205);
cs.Active();
sBarDes[0]="演示图形";
nBarId[0]=100;
sBarDes[1]="测试 >>>";
nBarId[1]=101;
sBarDes[2]="清除图板";
nBarId[2]=102;
sBarDes[3]="显示图板";
nBarId[3]=103;
sBarDes[4]="退出程序";
nBarId[4]=104;
sBarDes[5]="V.";
nBarId[5]=105;
setToolBarHeight(6);
setButtonTextSize(13);
setToolBarBackgroundColor(255,192,192,192);
setButtonColor(255,0,0,240);
setButtonTextColor(255,255,255,0);
setToolBar(100,myToolBarProc,sBarDes,nBarId,6);
sMenu[0]="新建文件";
nMenu[0]=200;
sMenu[1]="打开文件(*.bmp;*.jpg;*.png)";
nMenu[1]=201;
sMenu[2]="保存文件";
nMenu[2]=202;
sMenu[3]="选项";
nMenu[3]=203;
sMenu[4]="选项";
nMenu[4]=204;
sMenu[5]="关闭图板";
nMenu[5]=205;
sMenu[6]="显示图板";
nMenu[6]=206;
sMenu[7]="退出";
nMenu[7]=207;
setMenu(200,myMenuProc,sMenu,nMenu,8);
setTitle("窗口设计-滚动字幕 ");
//**********
// cs.SetColor (255,50,50,50); //backcolor
backpic ();
while (){}
}//main ()
rolltext (){ //滚动字幕
s1="国际歌";
s2="起来,饥寒交迫的奴隶,";
s3="起来,全世界受苦的人!";
s4="满腔的热血已经沸腾,";
s5="要为真理而斗争!";
s6="旧世界打个落花流水,";
s7="奴隶们起来起来!";
s8="不要说我们一无所有,";
s9="我们要做天下的主人!";
s10="这是最后的斗争,";
s11="团结起来到明天,";
s12="英特纳雄耐尔就一定要实现。";
s13="这是最后的斗争,";
s14="团结起来到明天,";
s15="英特纳雄耐尔就一定要实现!";
k=3; t=0;
re_play:
//**** scroll the text *******
backpic (); //底图
cs.SetColor (255,250,0,0);
cs.SetFillMode(1);
cs.SetTextSize (100);
cs.DrawText (s1,230,540);
cs.Update ();
sleep (1000);
dx=80; dy=1200;
for (i=0;i<50;i++){ // 滚动设置
cs.ClearDraw (0,src); //清屏
backpic (); //底图
cs.SetColor (255,200,200,200);
cs.SetTextSize (70); //文本阴影
cs.DrawText (s1,dx+160+k,dy-i*40+k);
cs.SetTextSize (40);
cs.DrawText (s2,dx+k,dy-i*40+60+k);
cs.DrawText (s3,dx+k,dy-i*40+120+k);
cs.DrawText (s4,dx+k,dy-i*40+180+k);
cs.DrawText (s5,dx+k,dy-i*40+240+k);
cs.DrawText (s6,dx+k,dy-i*40+300+k);
cs.DrawText (s7,dx+k,dy-i*40+360+k);
cs.DrawText (s8,dx+k,dy-i*40+420+k);
cs.DrawText (s9,dx+k,dy-i*40+480+k);
cs.DrawText (s10,dx+k,dy-i*40+540+k);
cs.DrawText (s11,dx+k,dy-i*40+600+k);
cs.DrawText (s12,dx+k,dy-i*40+660+k);
cs.DrawText (s13,dx+k,dy-i*40+720+k);
cs.DrawText (s14,dx+k,dy-i*40+780+k);
cs.DrawText (s15,dx+k,dy-i*40+840+k);
cs.SetColor (255,0,0,120);
cs.SetTextSize (70); //文本主体
cs.DrawText (s1,dx+160,dy-i*40);
cs.SetTextSize (40);
cs.DrawText (s2,dx,dy-i*40+60);
cs.DrawText (s3,dx,dy-i*40+120);
cs.DrawText (s4,dx,dy-i*40+180);
cs.DrawText (s5,dx,dy-i*40+240);
cs.DrawText (s6,dx,dy-i*40+300);
cs.DrawText (s7,dx,dy-i*40+360);
cs.DrawText (s8,dx,dy-i*40+420);
cs.DrawText (s9,dx,dy-i*40+480);
cs.DrawText (s10,dx,dy-i*40+540);
cs.DrawText (s11,dx,dy-i*40+600);
cs.DrawText (s12,dx,dy-i*40+660);
cs.DrawText (s13,dx,dy-i*40+720);
cs.DrawText (s14,dx,dy-i*40+780);
cs.DrawText (s15,dx,dy-i*40+840);
cs.Update ();
sleep (300);
}
//t=t+1;
// if (t<5) goto re_play; //replay 5 times
}//rolltext ()
backpic (){
fname="/storage/emulated/0/ubordy.jpg";
cs.DrawBitmap(fname,0,2); //加底图
cs.SetColor (255,240,100,0);
cs.SetTextSize (30);
cs.DrawText ("国际歌 ",570,740);
cs.DrawText ("E · 鲍狄埃 词 ",530,800);
cs.DrawText ("P · 狄盖特 曲 ",530,850);
cs.Update ();
}//backpic()
myToolBarProc(int nBtn,int nContext){
if(nBtn==100){//draw poline
cs.SetBackground(225,245,245);
setDisplay (1);
sn=doubleInput("选择演示图形", "1. 测试......>>> \n 输入 [ 空 ] 则取消 " );
//if (sn==0) return;
if (sn>0&&sn<9) rolltext ();
if (sn>9) return;
}
if(nBtn==101){//test
setDisplay (1);
rolltext ();
}
if(nBtn==102){//关闭图板
setDisplay (0);
}
if(nBtn==103){//显示图板
setDisplay (1);
}
if(nBtn==104){//退出程序
clearOutput();
cs.ClearDraw (0,src);
setDisplay (0);
exit (0);
}
if(nBtn==105){//@testdraw
setDisplay (1);
//testdraw ();
}
}//myToolBar ()
myMenuProc(int nMen,int nContext)
{
if(nMen==200){
print "新建文件";
disMsg(0,"新建文件");
cs.ClearDraw (0,src);
cs.Update (); }
if(nMen==201){
print "装载图片";
loadpic (); }
if(nMen==202){
print "保存图片";
disMsg(0,"保存图片");
savepic (); }
if (nMen==203){//选项
clearOutput ();
}
if (nMen==204){//选项
clearOutput ();
}
if(nMen==205){//close canvas
// print "select menu 6 : close canvas ";
setDisplay (0);
}
if(nMen==206){//show canvas
// print "select menu7 : show canvas ";
setDisplay (1);
}
if (nMen==207){//Exit
clearOutput();
cs.ClearDraw (0,src);
exit (0);
}
}//myMenu()
loadpic (){
//use filebox open a file and load a picture
filebox.SetTitle("装载图片(*.bmp;*.jpg;*.png)");
filebox.SetFilter(".bmp;.jpg;.png");
filebox.Show();
if(filebox.GetCount()==1){
fname=filebox.GetFileName(0);
if(getPicSize(fname,size)<0){
return;
}
size [2]=getPicSize (fname,size);
print "pic size = ",size[2];
cs.ClearDraw (0,src);
cs.DrawBitmap(fname,0,2);
cs.Update ();
//setDisplay (1);
print "Load a picture";
print fname;
}
}//loadpic ()
savepic (){
filebox.SetTitle("保存图片(*.bmp;*.jpg;*.png)");
filebox.SetFilter(".bmp;.jpg;.png");
filebox.SetMode(1);
filebox.Show();
if(filebox.GetCount()==1){
fname=filebox.GetFileName(0);
cs.SaveBitmap(fname); }
} //savepic ()
//**** End ****