滚动字幕制作C语言示例

滚动字幕制作C语言示例

滚动字幕设计是程序界面设计方式之一,绘出方法详见下面设计的源码。我是用myspringc语言在手机上编写和测试的。

MySpringC不仅可以编写简单的C语言程序,而且它能读取手机中各种传感器的数值,控制各种多媒体设备,从而实现让普通用户用C语言控制手机,编写出意想不到的、适合自己使用的应用。
v.2.7是目前的完善版本。下面的代码就是用它在安卓手机上编写的,可制作成安卓手机桌面app应用程序。此样例可复制黏贴到编译器直接使用,亦可用VB6,C++ , java  改写。

6db1430fad1a4ea28e16dd988fc83607.png

 

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 ****

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值