📄 draw.c
字号:
switch(linetype) { case 1:
gdk_draw_string(g->pixmap, srfont,penfont, CHARADD,CHARHEIGHT+15,"K线图"); break; case 2:
gdk_draw_string(g->pixmap, srfont,penfont, CHARADD,CHARHEIGHT+15,"美国线"); break; default:
gdk_draw_string(g->pixmap, srfont,penfont, CHARADD,CHARHEIGHT+15,"X线图"); break; }
gdk_draw_string(g->pixmap, srfont,penfont, CHARADD,columeareay-CHARHEIGHT+15,"成交量");
gdk_draw_string(g->pixmap, srfont,penfont, CHARADD,zbareay-CHARHEIGHT+15,curjszbname); /*画股票价格和分割线*/ gdk_draw_line(g->pixmap,penlayoutline, klineareax,klineareay+klineareaheight/3, klineareax+klineareawidth,klineareay+klineareaheight/3); gdk_draw_line(g->pixmap,penlayoutline, klineareax,klineareay+klineareaheight*2/3, klineareax+klineareawidth,klineareay+klineareaheight*2/3); areazgj=getAreazgj(areastart,areastart+areaklinenum); areazdj=getAreazdj(areastart,areastart+areaklinenum); tmp2 = areazgj; tmp3 = areazdj; for(i=0;i<areaklinenum && areastart+i<=stocksum;i++){ tmp1=getAverageLine(areastart+i,30); if(tmp2<tmp1) tmp2=tmp1; if(tmp3>tmp1) tmp3=tmp1; tmp1=getAverageLine(areastart+i,10); if(tmp2<tmp1) tmp2=tmp1; if(tmp3>tmp1) tmp3=tmp1; tmp1=getAverageLine(areastart+i,5); if(tmp2<tmp1) tmp2=tmp1; if(tmp3>tmp1) tmp3=tmp1; } if(tmp2 > areazgj) areazgj=tmp2; if(tmp3 < areazdj) areazdj=tmp3; jg=areazgj; jg=jg/100; sprintf(jgstr,"%3.2f",jg);// printf("\n%d %f %s\n",areazgj,jg,jgstr);
gdk_draw_string(g->pixmap, efont,penfont, CHARADD,klineareay+15,jgstr); jg=areazdj; jg=jg/100; sprintf(jgstr,"%3.2f",jg);// printf("\n%d %f %s\n",areazdj,jg,jgstr);
gdk_draw_string(g->pixmap, efont,penfont, CHARADD,klineareay+klineareaheight-5,jgstr); jg=areazdj+(areazgj-areazdj)/3; jg=jg/100; sprintf(jgstr,"%3.2f",jg);
gdk_draw_string(g->pixmap, efont,penfont, CHARADD,klineareay+15+klineareaheight*2/3,jgstr); jg=areazdj+(areazgj-areazdj)*2/3; jg=jg/100; sprintf(jgstr,"%3.2f",jg);
gdk_draw_string(g->pixmap, efont,penfont, CHARADD,klineareay+15+klineareaheight/3,jgstr); /*画成交量和成交量分割线*/ areacjl=getAreacjl(areastart,areastart+areaklinenum); gdk_draw_line(g->pixmap,penlayoutline, columeareax,columeareay+columeareaheight/3, columeareax+columeareawidth,columeareay+columeareaheight/3); gdk_draw_line(g->pixmap,penlayoutline, columeareax,columeareay+columeareaheight*2/3, columeareax+columeareawidth,columeareay+columeareaheight*2/3); tmp2 = areacjl; for(i=0;i<areaklinenum && areastart+i<=stocksum;i++){ tmp1=getAverageColume(areastart+i,10); if(tmp2<tmp1) tmp2=tmp1; tmp1=getAverageColume(areastart+i,5); if(tmp2<tmp1) tmp2=tmp1; } if(tmp2 > areacjl) areacjl=tmp2; sprintf(cjstr,"%ld",areacjl);
gdk_draw_string(g->pixmap, efont,penfont, CHARADD,columeareay+10,cjstr); sprintf(cjstr,"%ld",areacjl*2/3);
gdk_draw_string(g->pixmap, efont,penfont, CHARADD,columeareay+columeareaheight/3+5,cjstr); sprintf(cjstr,"%ld",areacjl/3);
gdk_draw_string(g->pixmap, efont,penfont, CHARADD,columeareay+columeareaheight*2/3+5,cjstr);}void drawFsScreen(GtkWidget *drawing_area){ char tmp[256]; int jc,tmpzsp; int i; int fpl; int fcl;// char jgstr[20]; float jg,fjc;// long tmp1,tmp2,tmp3;// char cjstr[20];
sprintf(tmp,"分时线:%s",stockname);// printf("%s\n",tmp);
gdk_draw_string(g->pixmap, srfont,penfont, fspricex+CHARADD,15,tmp); gdk_draw_rectangle (g->pixmap,
penframeline, FALSE,
fspricex,fspricey,
fspricewidth,
fspriceheight);
gdk_draw_rectangle (g->pixmap,
penframeline, FALSE,
fscolumex,fscolumey,
fscolumewidth,
fscolumeheight);
if(fszbflag){ gdk_draw_rectangle (g->pixmap,
penframeline, FALSE,
fszbx,fszby,
fszbwidth,
fszbheight);
} if(fszbflag){ fpl=8; fcl=5; } else{ fpl=14; fcl=9; } for(i=1;i<fpl;i++){ gdk_draw_line(g->pixmap,penframeline, fspricex,fspricey+fspriceheight*i/fpl, fspricex+fspricewidth,fspricey+fspriceheight*i/fpl); } gdk_draw_line(g->pixmap,penframeline, fspricex,fspricey+fspriceheight/2+1, fspricex+fspricewidth,fspricey+fspriceheight/2+1); gdk_draw_line(g->pixmap,penframeline, fspricex,fspricey+fspriceheight/2-1, fspricex+fspricewidth,fspricey+fspriceheight/2-1);//画分割价格 jg=(gpmx.zsp>0)?gpmx.zsp:1; sprintf(tmp,"%7.2f",jg); jg=jg*100; tmpzsp=(int)jg;
gdk_draw_string(g->pixmap, efont,penequal, CHARADD,fspricey+fspriceheight/2+5, tmp); sprintf(tmp,"0.00"); strcat(tmp,"%"); gdk_draw_string(g->pixmap, efont,penequal, fspricex+fspricewidth,fspricey+fspriceheight/2+5, tmp); fspricezgj=getFsPriceZgj(); fspricezdj=getFsPriceZdj(); if(fspricezgj == 0 || fspricezdj == 0){ fspricezgj=tmpzsp+fpl/2; fspricezdj=tmpzsp-fpl/2; } jc=ABS(fspricezgj-tmpzsp)>ABS(fspricezdj-tmpzsp)? ABS(fspricezgj-tmpzsp):ABS(fspricezdj-tmpzsp); // jc=ABS(gpmx.zgj-gpmx.zsp)>ABS(gpmx.zdj-gpmx.zsp)?// ABS(gpmx.zgj-gpmx.zsp):ABS(gpmx.zdj-gpmx.zsp); fjc=jc; fjc=fjc*2/fpl; for(i=1;i<=fpl/2;i++){ jg=tmpzsp+i*fjc; jg=jg/100; sprintf(tmp,"%7.2f",jg);
gdk_draw_string(g->pixmap, efont,penup, CHARADD,fspricey+fspriceheight/2-fspriceheight*i/fpl+5, tmp); jg=tmpzsp-i*fjc; jg=jg/100; sprintf(tmp,"%7.2f",jg);
gdk_draw_string(g->pixmap, efont,pendown, CHARADD,fspricey+fspriceheight/2+fspriceheight*i/fpl+5, tmp); jg=fjc*i*100/tmpzsp; sprintf(tmp,"%3.2f",jg); strcat(tmp,"%"); gdk_draw_string(g->pixmap, efont,penup, fspricex+fspricewidth, fspricey+fspriceheight/2-fspriceheight*i/fpl+5, tmp); gdk_draw_string(g->pixmap, efont,pendown, fspricex+fspricewidth, fspricey+fspriceheight/2+fspriceheight*i/fpl+5, tmp); } for(i=1;i<fcl;i++){ gdk_draw_line(g->pixmap,penframeline, fscolumex,fscolumey+fscolumeheight*i/fcl, fscolumex+fscolumewidth,fscolumey+fscolumeheight*i/fcl); }//画分割成交量// jc=gpmx.zss; fsmaxcolume=getMaxFsColume(); jg=fsmaxcolume/fcl; for(i=0;i<fcl;i++){ sprintf(tmp,"%7.0f",jg*i);
gdk_draw_string(g->pixmap, efont,penequal, CHARADD,fscolumey+fscolumeheight*(fcl-i)/fcl+5, tmp); } if(fszbflag){ for(i=1;i<5;i++){ gdk_draw_line(g->pixmap,penframeline, fszbx,fszby+fszbheight*i/5, fszbx+fszbwidth,fszby+fszbheight*i/5); } } for(i=1;i<8;i++){ if((i/2+1)==(i+1)/2){ gdk_draw_line(g->pixmap,penlayoutline, fspricex+fspricewidth*i/8,fspricey, fspricex+fspricewidth*i/8,fscolumey+fscolumeheight); } else{ gdk_draw_line(g->pixmap,penframeline, fspricex+fspricewidth*i/8,fspricey, fspricex+fspricewidth*i/8,fscolumey+fscolumeheight); } }
gdk_draw_string(g->pixmap,efont,penwhite, fspricex-CHARWIDTH,fszby+fszbheight+15,"9:30");
gdk_draw_string(g->pixmap,efont,penwhite, fspricex+fspricewidth/4-CHARWIDTH,fszby+fszbheight+15,"10:30");
gdk_draw_string(g->pixmap,efont,penwhite, fspricex+fspricewidth/2-CHARWIDTH,fszby+fszbheight+15,"11:30");
gdk_draw_string(g->pixmap,efont,penwhite, fspricex+fspricewidth*3/4-CHARWIDTH,fszby+fszbheight+15,"14:00");
gdk_draw_string(g->pixmap,efont,penwhite, fspricex+fspricewidth-CHARWIDTH,fszby+fszbheight+15,"15:00"); }void drawStatusBar(void){ float shzf; float shzfbl; float shcjsl; float shcjje; float szzf; float szzfbl; float szcjsl; float szcjje; char shstr[256]; char szstr[256]; shzf=0; shzfbl=0; shcjsl=0; shcjje=0; szzf=0; szzfbl=0; szcjsl=0; szcjje=0; gdk_draw_rectangle (g->pixmap,
penframeline, FALSE,
statusbarx,statusbary,
statusbarwidth,
statusbarheight);
gdk_draw_line(g->pixmap,penframeline, statusbarwidth-200,statusbary, statusbarwidth-200,statusbary+statusbarheight); gdk_draw_line(g->pixmap,penframeline, statusbarwidth-100,statusbary, statusbarwidth-100,statusbary+statusbarheight); gdk_draw_line(g->pixmap,penframeline, statusbarx+290,statusbary, statusbarx+290,statusbary+statusbarheight); sprintf(shstr,"上证 %3.2f %3.2f %8.0f手 %8.0f万", shzf,shzfbl,shcjsl,shcjje); sprintf(szstr,"深证 %3.2f %3.2f %8.0f手 %8.0f万", szzf,szzfbl,szcjsl,szcjje);
gdk_draw_string(g->pixmap, efont,penwhite, statusbarx+1,statusbary+15,shstr);
gdk_draw_string(g->pixmap, efont,penwhite, statusbarx+292,statusbary+15,szstr); }void drawGpmx(void){ char tmp[200]; gdk_draw_rectangle (g->pixmap,
penframeline, FALSE,
gpmxareax,gpmxareay,
gpmxareawidth,
gpmxareaheight);
sprintf(tmp,"%s %s",stockname,stockcode);
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+50,gpmxareay-5,tmp); gdk_draw_line(g->pixmap,penframeline, gpmxareax,gpmxareay+CHARHEIGHT, gpmxareax+gpmxareawidth,gpmxareay+CHARHEIGHT); gdk_draw_line(g->pixmap,penframeline, gpmxareax,gpmxareay+CHARHEIGHT*4, gpmxareax+gpmxareawidth,gpmxareay+CHARHEIGHT*4); gdk_draw_line(g->pixmap,penframeline, gpmxareax,gpmxareay+CHARHEIGHT*5, gpmxareax+gpmxareawidth,gpmxareay+CHARHEIGHT*5); gdk_draw_line(g->pixmap,penframeline, gpmxareax,gpmxareay+CHARHEIGHT*8, gpmxareax+gpmxareawidth,gpmxareay+CHARHEIGHT*8); gdk_draw_line(g->pixmap,penframeline, gpmxareax,gpmxareay+CHARHEIGHT*13, gpmxareax+gpmxareawidth,gpmxareay+CHARHEIGHT*13);
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT-5,"委比");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*2-5,"卖三");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*3-5,"卖二");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*4-5,"卖一");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*5-5, "买入 卖出");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*6-5,"买一");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*7-5,"买二");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*8-5,"买三");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*9-5, "成交 均价");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*10-5, "涨跌 开盘");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*11-5, "幅度 最高");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*12-5, "总手 最低");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*13-5, "现手 量比");
gdk_draw_string(g->pixmap, efont,penwhite, gpmxareax+1,gpmxareay+CHARHEIGHT*14-5, "外盘 内盘");}gint drawTime(GtkWidget *widget){ char tmpstr[256]; time_t t; tm *ti; ti=(tm *)malloc(sizeof(tm)); time(&t); ti=localtime(&t); sprintf(tmpstr,"%02d:%02d:%02d", ti->tm_hour,ti->tm_min,ti->tm_sec);// printf("time:%s",tmpstr); gdk_draw_rectangle (drawing_area->window,
penbackground, TRUE,
statusbarwidth-99,statusbary+1,
98,statusbarheight-2); gdk_draw_string(drawing_area->window, efont,penwhite, statusbarwidth-80,statusbary+15, tmpstr); return(TRUE); }void drawAline(int wherearea,int anum,int num){ int x,y,x1,y1; int ry; int tmpjc; int areax,areay,areaheight; if(frechflag == 0) return; switch(wherearea){ case KLINEAREA: areax=klineareax;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -