⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draw.c

📁 用GTK+做用户界面 股票每日分时行情用数据库管理——MYSQL 软件应用方式客户端/服务器模式 基于TCP/IP的C/S通信模式 实现STOCK
💻 C
📖 第 1 页 / 共 5 页
字号:
#include <time.h>#include "jszb.h"#include "gmclient.h"#include "draw.h"#include "stocksql.h"static typgraphics *g=NULL;static GdkGC * penbackground =NULL;static GdkGC * penframeline =NULL;static GdkGC * penlayoutline =NULL;static GdkGC * penfont =NULL;static GdkGC * penklineup =NULL;static GdkGC * penklinedown =NULL;static GdkGC * penaline =NULL;static GdkGC * penkavgline1 =NULL;static GdkGC * penkavgline2 =NULL;static GdkGC * penkavgline3 =NULL;static GdkGC * penkavgline4 =NULL;static GdkGC * penkavgline5 =NULL;static GdkGC * penjszb[5]={NULL,NULL,NULL,NULL,NULL};/*十字光标GC*/static GdkGC * penxcur = NULL;/*区域统计GC*/static GdkGC *pentotal = NULL;static GdkGC *penwhite = NULL;static GdkGC *penup = NULL;static GdkGC *pendown = NULL;static GdkGC *penequal = NULL;static GdkGC *penfsline = NULL;static GdkGC *penfsavgline = NULL;static GdkGC *penfscolume = NULL;static GdkFont *efont=NULL;static GdkFont *sifont=NULL;static GdkFont *srfont=NULL;/*画图区间K线数量*/int areaklinenum;/*k线和成交量画图区域的宽度和高度*/int klineareawidth;int klineareaheight;int columeareawidth;int columeareaheight;int zbareawidth;int zbareaheight;int drawareawidth;int drawareaheight;int statusbarwidth;int statusbarheight;int gpmxareawidth;int gpmxareaheight;int fspricewidth;int fspriceheight;int fscolumewidth;int fscolumeheight;int fszbwidth;int fszbheight;int jsfspricewidth;int jsfspriceheight;int jsfscolumewidth;int jsfscolumeheight;/*k线和成交量画图区域的起始座标x,y*/int klineareax;int klineareay;int columeareax;int columeareay;int zbareax;int zbareay;//状态栏区域坐标int statusbarx;int statusbary;//股票明细数据显示区域坐标int gpmxareax;int gpmxareay;/*分时区域坐标*/int fspricex;int fspricey;int fscolumex;int fscolumey;int fszbx;int fszby;//技术分析区域分时微缩图坐标int jsfspricex;int jsfspricey;int jsfscolumex;int jsfscolumey;//分笔成交显示区域坐标int tracex;int tracey;int tracewidth;int traceheight;//上海,深圳综合指数显示区域坐标int zsfspricex;int zsfspricey;int zsfscolumex;int zsfscolumey;int zsfspricewidth;int zsfspriceheight;int zsfscolumewidth;int zsfscolumeheight;/*区域显示标志 0--显示技术指标区域                1--显示分时区域               2--显示大盘综合指数区域               3--显示指数区域*/int fsflag;/*分时指标显示标志 0--不显示 1--显示*/int fszbflag;static char *eg1="-adobe-courier-medium-o-normal--11-80-100-100-m-60-iso8859-1";static char *sr1="-cclib-song-medium-r-normal-jiantizi-16-160-75-75-c-160-gb2312.1980-1";static char *si1="-tlc-song-medium-i-normal--0-0-0-0-c-0-gb13000.1993-1";/*k线的宽度*/int klinewidth;/*鼠标线移动位址*/int mouselinex;int mouseliney;/*十字鼠标线显示标志  0--no 1--yes*/int mouselineflag;/*十字鼠标线能否显示标志  0--no 1--yes*/int cursormouseflag;       /*价格均线显示标志  0--no 1--yes*/int drawavglineflag;/*成交量均线显示标志  0--no 1--yes*/int drawavgcolumeflag;/*走势线类型    1--K线 2--美国线*/int linetype;int candrawflag;void drawarea_init(){   mouselinex=1;   mouseliney=1;   mouselineflag=0;   cursormouseflag=0;   klinewidth=9;   drawavglineflag=1;   drawavgcolumeflag=1;   linetype = 1;   candrawflag = 0;   areatotalflag = 0;   fszbflag = 0;   fsflag = 0;   gdk_draw_rectangle (drawing_area->window,
              penbackground,              TRUE,
              0, 0,
              drawing_area->allocation.width,
              drawing_area->allocation.height);
}typgraphics * newGraphics(){   typgraphics *gfx;      gfx=(typgraphics *)g_malloc(sizeof(typgraphics));         gfx->gc=NULL;   gfx->pixmap=NULL;      return(gfx);}GdkGC * getPen(GdkColor *c){   GdkGC *gc;      gc=gdk_gc_new(g->pixmap);      gdk_gc_set_foreground(gc,c);      return(gc);}GdkColor * newColor(long red,long green,long blue){   GdkColor *c=(GdkColor *)g_malloc(sizeof(GdkColor));      c->red = red;   c->green = green;   c->blue = blue;      gdk_color_alloc(gdk_colormap_get_system(),c);      return(c);}GdkGC *getNewPen(GdkColor *c){   GdkGC *gc;      gc=gdk_gc_new(g->pixmap);      gdk_color_alloc(gdk_colormap_get_system(),c);   gdk_gc_set_foreground(gc,c);      return(gc);}void changePenColor(GdkGC * gc,GdkColor *c){   gdk_color_alloc(gdk_colormap_get_system(),c);   gdk_gc_set_foreground(gc,c);}void changeAllPenColor(void){      changePenColor(penbackground,&background);      changePenColor(penfont,&font);      changePenColor(penframeline,&layoutline);      changePenColor(penlayoutline,&layoutline);      changePenColor(penklineup,&klineup);      changePenColor(penklinedown,&klinedown);      changePenColor(penaline,&aline);      changePenColor(penkavgline1,&kavgline1);      changePenColor(penkavgline2,&kavgline2);      changePenColor(penkavgline3,&kavgline3);      changePenColor(penkavgline4,&kavgline4);      changePenColor(penkavgline5,&kavgline5);      changePenColor(penjszb[0],&jszb1);      changePenColor(penjszb[1],&jszb2);      changePenColor(penjszb[2],&jszb3);      changePenColor(penjszb[3],&jszb4);      changePenColor(penjszb[4],&jszb5);}GdkFont *setFont(char *szfont){   GdkFont *tmpfont;   tmpfont = gdk_font_load(szfont);   return(tmpfont);}void changeAllFont(void){   efont = gdk_font_load (eg);
   sifont = gdk_font_load (si);
   srfont = gdk_font_load (sr);
}void drawInit(){        if(penbackground == NULL){      penbackground = getNewPen(&background);      penfont       = getNewPen(&font);      penframeline  = getNewPen(&layoutline);      penlayoutline = getNewPen(&layoutline);      penklineup    = getNewPen(&klineup);      penklinedown  = getNewPen(&klinedown);      penaline      = getNewPen(&aline);      penkavgline1  = getNewPen(&kavgline1);      penkavgline2  = getNewPen(&kavgline2);      penkavgline3  = getNewPen(&kavgline3);      penkavgline4  = getNewPen(&kavgline4);      penkavgline5  = getNewPen(&kavgline5);      penjszb[0]      = getNewPen(&jszb1);      penjszb[1]      = getNewPen(&jszb2);      penjszb[2]      = getNewPen(&jszb3);      penjszb[3]      = getNewPen(&jszb4);      penjszb[4]      = getNewPen(&jszb5);      penup        = getNewPen(&up);      pendown      = getNewPen(&down);      penequal     = getNewPen(&equal);      penfsline    = getNewPen(&fsline);      penfsavgline = getNewPen(&fsavgline);      penfscolume  = getNewPen(&fscolume);      penwhite     = getPen(newColor(0xffff,0xffff,0xffff));//      printf("%X %X %X\n",up.red,up.green,up.blue);            penxcur = getPen(newColor(0xffff,0xffff,0xffff));      gdk_gc_set_function(penxcur,GDK_XOR);      pentotal = getPen(newColor(0xffff,0xffff,0xffff));      gdk_gc_set_function(pentotal,GDK_XOR);      gdk_gc_set_line_attributes(penlayoutline,1,                                 GDK_LINE_DOUBLE_DASH,                                 GDK_CAP_NOT_LAST,                                 GDK_JOIN_MITER);/*      penwhite     = getPen(newColor(0xffff,0xffff,0xffff));      penup        = getPen(newColor(0xffff,0xffff,0xffff));      pendown      = getPen(newColor(0xffff,0xffff,0xffff));      penequal     = getPen(newColor(0xffff,0xffff,0xffff));      penfsline    = getPen(newColor(0xffff,0xffff,0xffff));      penfsavgline = getPen(newColor(0xffff,0xffff,0xffff));      penfscolume  = getPen(newColor(0xffff,0xffff,0xffff));*/             }        /* set font*/    if(efont == NULL){       if(eg) efont = setFont(eg);       else efont = setFont(eg1);       if(si) sifont = setFont(si);       else sifont = setFont(si1);       if(sr) srfont = setFont(sr);       else srfont = setFont(sr1);    }    if(areastart <= 0)    {//       printf("areastart < =0");       areastart=1;    }    candrawflag = 1;}void defineDrawarea(GtkWidget *drawing_area){  drawareawidth=drawing_area->allocation.width;  drawareaheight=drawing_area->allocation.height;          klineareax=3*CHARWIDTH;  klineareay=2*CHARHEIGHT;  klineareawidth=drawing_area->allocation.width-klineareax-200;  klineareaheight=11*CHARHEIGHT;  columeareax=klineareax;  columeareay=klineareay+klineareaheight+CHARHEIGHT;  columeareawidth=klineareawidth;  columeareaheight=   (drawing_area->allocation.height-columeareay-CHARHEIGHT*3)*2/5;  zbareax=klineareax;  zbareay=columeareay+columeareaheight+CHARHEIGHT;  zbareawidth=klineareawidth;  zbareaheight=    drawing_area->allocation.height-zbareay-CHARHEIGHT*2;  areaklinenum=klineareawidth/(klinewidth+1);  statusbarx=0;  statusbary=drawing_area->allocation.height-CHARHEIGHT;  statusbarwidth=drawing_area->allocation.width-1;  statusbarheight=CHARHEIGHT-2;  gpmxareax=klineareax+klineareawidth+1;  gpmxareay=30;  gpmxareawidth=drawing_area->allocation.width-gpmxareax-1;  gpmxareaheight=14*CHARHEIGHT;  fspricex=klineareax;  fscolumex=fspricex;  fszbx=fspricex;  fspricewidth=drawing_area->allocation.width-gpmxareawidth               -klineareax-3*CHARWIDTH;  fscolumewidth=fspricewidth;  fszbwidth=fspricewidth;  if(!fszbflag){   fspricey=CHARHEIGHT;   fspriceheight=(drawing_area->allocation.height-3*CHARHEIGHT)*2/3;   fscolumey=fspricey+fspriceheight+1;   fscolumeheight=(drawing_area->allocation.height-3*CHARHEIGHT)/3;   fszby=fscolumey+fscolumeheight+1;   fszbheight=0;  }  else{    fspricey=CHARHEIGHT;    fspriceheight=(drawing_area->allocation.height-3*CHARHEIGHT)/2;    fscolumey=fspricey+fspriceheight+1;    fscolumeheight=(drawing_area->allocation.height-3*CHARHEIGHT)/4;    fszby=fscolumey+fscolumeheight+1;    fszbheight=(drawing_area->allocation.height-3*CHARHEIGHT)/4;  }//     printf("%d %d",klineareawidth,areaklinenum);  jsfspricex=(int)(gpmxareax+2.5*CHARWIDTH);  jsfscolumex=jsfspricex;  jsfspriceheight=5*CHARHEIGHT;  jsfscolumeheight=3*CHARHEIGHT-1;  jsfspricey=statusbary-8*CHARHEIGHT;  jsfscolumey=statusbary-3*CHARHEIGHT+1;  jsfspricewidth=drawing_area->allocation.width-jsfspricex;  jsfscolumewidth=jsfspricewidth;  tracex=gpmxareax;;  tracey=gpmxareay+gpmxareaheight;  tracewidth=gpmxareawidth;;  traceheight=drawing_area->allocation.height-               tracey-statusbarheight-2;          zsfspricex=klineareax;  zsfscolumex=zsfspricex;  zsfspriceheight=(drawing_area->allocation.height                   -3*CHARHEIGHT)*2/3;  zsfscolumeheight=(drawing_area->allocation.height                   -3*CHARHEIGHT)/3;  zsfspricey=CHARHEIGHT;  zsfscolumey=fspricey+fspriceheight+1;  zsfspricewidth=drawing_area->allocation.width               -klineareax-3*CHARWIDTH;  zsfscolumewidth=zsfspricewidth;}void drawJsScreen(GtkWidget *drawing_area){    char tmp[50];    int i;    char jgstr[20];    float jg;    long tmp1,tmp2,tmp3;    char cjstr[20];
//    HandleKeysPressed ();
        sprintf(tmp,"股票名称:%s",stockname);//    printf("%s\n",tmp); 
  gdk_draw_string(g->pixmap,                    srfont,penfont,                    CHARADD,15,tmp);    gdk_draw_line(g->pixmap,penframeline,                        0,CHARHEIGHT,                        klineareax+klineareawidth,CHARHEIGHT);    gdk_draw_line(g->pixmap,penframeline,0,                        CHARHEIGHT*2,                        klineareax+klineareawidth,CHARHEIGHT*2);    gdk_draw_line(g->pixmap,penframeline,0,columeareay-CHARHEIGHT,               columeareax+columeareawidth,columeareay-CHARHEIGHT);    gdk_draw_line(g->pixmap,penframeline,                  0,columeareay,                  columeareax+columeareawidth,columeareay);    gdk_draw_line(g->pixmap,penframeline,0,zbareay-CHARHEIGHT,                  zbareax+zbareawidth,zbareay-CHARHEIGHT);    gdk_draw_line(g->pixmap,penframeline,0,zbareay,                  zbareax+zbareawidth,zbareay);    gdk_draw_line(g->pixmap,penframeline,0,zbareay+zbareaheight,                  zbareax+zbareawidth,zbareay+zbareaheight);    gdk_draw_line(g->pixmap,penframeline,klineareax,CHARWIDTH                  ,klineareax,zbareay+zbareaheight);    gdk_draw_line(g->pixmap,penframeline,                  klineareax+klineareawidth,CHARHEIGHT,                  klineareax+klineareawidth,statusbary);                  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -