滚动字幕制作C语言示例
滾動字幕制作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 ****
?
總結
以上是生活随笔為你收集整理的滚动字幕制作C语言示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Logism · 汉字字库存储芯片扩展
- 下一篇: iPhone手机史上最全的扫盲帖【越狱,