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

📄 draw.c

📁 用GTK+做用户界面 股票每日分时行情用数据库管理——MYSQL 软件应用方式客户端/服务器模式 基于TCP/IP的C/S通信模式 实现STOCK
💻 C
📖 第 1 页 / 共 5 页
字号:

   gdk_draw_string(drawing_area->window,                    efont,penfont,                    300,15,tmp);    ap1=getAverageLine(num,5);    ap1=ap1/100;    sprintf(tmp,"5PMA: %3.2f",ap1); 
  gdk_draw_string(drawing_area->window,                    efont,penkavgline1,80,CHARHEIGHT+15,                    tmp);    ap2=getAverageLine(num,10);    ap2=ap2/100;    sprintf(tmp,"10PMA: %3.2f",ap2); 
  gdk_draw_string(drawing_area->window,                    efont,penkavgline2,200,CHARHEIGHT+15,                    tmp);    ap3=getAverageLine(num,30);    ap3=ap3/100;    sprintf(tmp,"30PMA: %3.2f",ap3); 
  gdk_draw_string(drawing_area->window,                    efont,penkavgline3,320,CHARHEIGHT+15,                    tmp);                        al1=getAverageColume(num,5);        sprintf(tmp,"5PMA: %ld",al1); 
  gdk_draw_string(drawing_area->window,                    efont,penkavgline1,                    80,columeareay-CHARHEIGHT+15,tmp);    al2=getAverageColume(num,10);    sprintf(tmp,"10PMA: %ld",al2); 
  gdk_draw_string(drawing_area->window,                    efont,penkavgline2,                    200,columeareay-CHARHEIGHT+15,tmp);    x=0;    for(i=0;i<jszbrec[curjszbno].num;i++){      if(jszbrec[curjszbno].type[i] == JSZBKLINETYPE)       continue;      sprintf(tmp,"%s: %5.2f",jszbrec[curjszbno].jszblabel[i],                    jszbrec[curjszbno].jszbdata[i][num]); 
    gdk_draw_string(drawing_area->window,                    efont,penjszb[i],                    80+x*120,zbareay-CHARHEIGHT+15,tmp);      x++;    }}gint Repaint()
{
    GdkRectangle  update_rect;
    defineDrawarea(drawing_area);     /* --- clear pixmap (background image) --- */
    gdk_draw_rectangle (g->pixmap,
              penbackground,              TRUE,
              0, 0,
              drawing_area->allocation.width,
              drawing_area->allocation.height);
    drawStatusBar();    drawTime(drawing_area);   switch(fsflag){       case JSFLAG:         drawGpmx();         stockdraw->drawStockGpmx();         drawJsScreen(drawing_area);         if(linetype == 1)           drawKlinearea(KLINEAREA);         else           drawAlinearea(KLINEAREA);         drawColumearea(COLUMEAREA);            if(drawavglineflag){         drawAverageLine(5,penkavgline1);         drawAverageLine(10,penkavgline2);         drawAverageLine(30,penkavgline3);        }        if(drawavgcolumeflag){         drawAverageColume(5,penkavgline1);         drawAverageColume(10,penkavgline2);        }        drawJszbLine();        stockdraw->drawJsfsScreen();        stockdraw->drawJsfsPrice();        stockdraw->drawJsfsColume();        break;      case FSFLAG:        drawGpmx();        stockdraw->drawStockGpmx();        drawFsScreen(drawing_area);        stockdraw->drawFsLine();        stockdraw->drawFsColume();        stockdraw->drawStockTrace();        break;      case ZSFSFLAG:        stockdraw->drawZsfsScreen();        stockdraw->drawZsfsLine();        stockdraw->drawZsfsColume();        break;      case GPMXLISTFLAG:        stockdraw->drawGpmxListScreen();        stockdraw->drawGpmxList();        break;    }    mouselineflag = 0;        update_rect.x = 0;
    update_rect.y = 0;
    update_rect.width = drawing_area->allocation.width;
    update_rect.height = drawing_area->allocation.height;

        /* --- And then draw it (calls expose event) --- */
    gtk_widget_draw (drawing_area, &update_rect);
    return (TRUE);
}

/* 
 * configure_event
 *
 * Create a new backing pixmap of the appropriate size 
 * Of course, this is called whenever the window is 
 * resized.  We have to free up things we allocated.
 */
gint configure_event (GtkWidget *widget, GdkEventConfigure *event)
{
    if(g == NULL){        g = newGraphics();    }        /* --- Free background if we created it --- */
    if(g->pixmap){         gdk_pixmap_unref(g->pixmap);    }            /* --- Create a new pixmap with new size --- */
    g->pixmap = gdk_pixmap_new(widget->window,                      widget->allocation.width,                      widget->allocation.height,                      -1);     drawInit();                         /*clear it out*/    gdk_draw_rectangle(g->pixmap,penbackground,                      TRUE,0,0,                      widget->allocation.width,                      widget->allocation.height); 
    Repaint();    return TRUE;
}

/*
 * expose_event
 *
 * When the window is exposed to the viewer or 
 * the gdk_widget_draw routine is called, this 
 * routine is called.  Copies the background pixmap
 * to the window.
 */
gint expose_event (GtkWidget *widget, GdkEventExpose *event)
{

    /* --- Copy pixmap to the window --- */
    gdk_draw_pixmap (widget->window,
          widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
          g->pixmap,
          event->area.x, event->area.y,
          event->area.x, event->area.y,
          event->area.width, event->area.height);

    if(!fsflag)     drawJsRecord(stocksum);
    return FALSE;
}
//stockDraw::stockDraw():stockSql()stockDraw::stockDraw(){}stockDraw::~stockDraw(){}void stockDraw::drawStockGpmx(){   char tmp[200];   GdkGC * pentmp =NULL;      sprintf(tmp,"%6.2f%",gpmx.wb);   if(gpmx.wb>0) pentmp = penup;   else if(gpmx.wb==0) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT-5,           tmp);   sprintf(tmp,"%6.2f",gpmx.mcj3);   if(gpmx.mcj3>gpmx.zsp) pentmp = penup;   else if(gpmx.mcj3==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*2-5,           tmp);   sprintf(tmp,"%6.0f",gpmx.mcl3);
  gdk_draw_string(g->pixmap,           efont,penequal,           gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*2-5,           tmp);   sprintf(tmp,"%6.2f",gpmx.mcj2);   if(gpmx.mcj2>gpmx.zsp) pentmp = penup;   else if(gpmx.mcj2==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*3-5,           tmp);   sprintf(tmp,"%6.0f",gpmx.mcl2);
  gdk_draw_string(g->pixmap,           efont,penequal,           gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*3-5,           tmp);   sprintf(tmp,"%6.2f",gpmx.mcj1);   if(gpmx.mcj1>gpmx.zsp) pentmp = penup;   else if(gpmx.mcj1==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*4-5,           tmp);   sprintf(tmp,"%6.0f",gpmx.mcl1);
  gdk_draw_string(g->pixmap,           efont,penequal,           gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*4-5,           tmp);    sprintf(tmp,"%6.2f",gpmx.mrj1);    if(gpmx.mrj1>gpmx.zsp) pentmp = penup;    else if(gpmx.mrj1==gpmx.zsp) pentmp = penequal;    else pentmp = pendown;
   gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*5-5,           tmp);    sprintf(tmp,"%6.2f",gpmx.mcj1);    if(gpmx.mcj1>gpmx.zsp) pentmp = penup;    else if(gpmx.mcj1==gpmx.zsp) pentmp = penequal;    else pentmp = pendown;
   gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*5-5,           tmp);        sprintf(tmp,"%6.2f",gpmx.mrj1);   if(gpmx.mrj1>gpmx.zsp) pentmp = penup;   else if(gpmx.mrj1==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*6-5,           tmp);   sprintf(tmp,"%6.0f",gpmx.mrl1);
  gdk_draw_string(g->pixmap,           efont,penequal,           gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*6-5,           tmp);              sprintf(tmp,"%6.2f",gpmx.mrj2);   if(gpmx.mrj2>gpmx.zsp) pentmp = penup;   else if(gpmx.mrj2==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*7-5,           tmp);   sprintf(tmp,"%6.0f",gpmx.mrl2);
  gdk_draw_string(g->pixmap,           efont,penequal,           gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*7-5,           tmp);   sprintf(tmp,"%6.2f",gpmx.mrj3);   if(gpmx.mrj3>gpmx.zsp) pentmp = penup;   else if(gpmx.mrj3==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,           efont,pentmp,           gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*8-5,           tmp);   sprintf(tmp,"%6.0f",gpmx.mrl3);
  gdk_draw_string(g->pixmap,           efont,penequal,           gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*8-5,           tmp);   sprintf(tmp,"%6.2f",gpmx.cjj);   if(gpmx.cjj>gpmx.zsp) pentmp = penup;   else if(gpmx.cjj==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,            efont,pentmp,            gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*9-5,            tmp);                      sprintf(tmp,"%6.2f",gpmx.jj);   if(gpmx.jj>gpmx.zsp) pentmp = penup;   else if(gpmx.jj==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,            efont,pentmp,            gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*9-5,            tmp);   sprintf(tmp,"%6.2f",gpmx.zd);   if(gpmx.cjj>gpmx.zsp) pentmp = penup;   else if(gpmx.cjj==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,            efont,pentmp,            gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*10-5,            tmp);   sprintf(tmp,"%6.2f",gpmx.kpj);   if(gpmx.kpj>gpmx.zsp) pentmp = penup;   else if(gpmx.kpj==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,            efont,pentmp,            gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*10-5,            tmp);   sprintf(tmp,"%6.2f%",gpmx.zdf);   if(gpmx.cjj>gpmx.zsp) pentmp = penup;   else if(gpmx.cjj==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,            efont,pentmp,            gpmxareax+CHARWIDTH*2-5,gpmxareay+CHARHEIGHT*11-5,            tmp);   sprintf(tmp,"%6.2f",gpmx.zgj);   if(gpmx.zgj>gpmx.zsp) pentmp = penup;   else if(gpmx.zgj==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,            efont,pentmp,            gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*11-5,            tmp);   sprintf(tmp,"%6.0f",gpmx.zss);
  gdk_draw_string(g->pixmap,            efont,penequal,            gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*12-5,            tmp);               sprintf(tmp,"%6.2f",gpmx.zdj);   if(gpmx.zdj>gpmx.zsp) pentmp = penup;   else if(gpmx.zdj==gpmx.zsp) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,            efont,pentmp,            gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*12-5,            tmp);   sprintf(tmp,"%6.0f",gpmx.xss);
  gdk_draw_string(g->pixmap,            efont,penequal,            gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*13-5,            tmp);   sprintf(tmp,"%6.2f%",gpmx.lb);   if(gpmx.lb>0) pentmp = penup;   else if(gpmx.lb == 0) pentmp = penequal;   else pentmp = pendown;
  gdk_draw_string(g->pixmap,            efont,pentmp,            gpmxareax+CHARWIDTH*7-5,gpmxareay+CHARHEIGHT*13-5,            tmp);               sprintf(tmp,"%6.0f",gpmx.wp);
  gdk_draw_string(g->pixmap,            efont,penup,            gpmxareax+1+CHARWIDTH*2,gpmxareay+CHARHEIGHT*14-5,            tmp);   sprintf(tmp,"%6.0f",gpmx.np);
  gdk_draw_string(g->pixmap,            efont,pendown,            gpmxareax+1+CHARWIDTH*7,gpmxareay+CHARHEIGHT*14-5,            tmp);      }void stockDraw::drawFsLine(){    int x,x1,y,y1;    int i;    int tmpjc,tmpzsp,tmpzgj;    float jg;        if(!frechfsflag)       return;        jg=gpmx.zsp*100;    tmpzsp=int(jg);    tmpjc=ABS(fspricezgj-tmpzsp)>ABS(fspricezdj-tmpzsp)?       ABS(fspricezgj-tmpzsp):ABS(fspricezdj-tmpzsp);    tmpzgj=tmpzsp+tmpjc;    tmpjc=tmpjc*2;    for(i=0;i<fssum-1 && i<MAXFSLINENUM-1;i++){      x=fspricex+fspricewidth*(i+1)/MAXFSLINENUM;       x1=fspricex+fspricewidth*(i+2)/MAXFSLINENUM;;      y=(tmpzgj-fs[i].price)*fspriceheight/tmpjc+fspricey;      y1=(tmpzgj-fs[i+1].price)*fspriceheight/tmpjc+fspricey;      gdk_draw_line(g->pixmap,penfsline,x,y,x1,y1);      y=(tmpzgj-fs[i].avgprice)*fspriceheight/tmpjc+fspricey;      y1=(tmpzgj-fs[i+1].avgprice)*fspriceheight/tmpjc+fspricey;      gdk_draw_line(g->pixmap,penfsavgline,x,y,x1,y1);    }}void stockDraw::drawFsColume(){    int x,y;    int i;        if(!frechfsflag)       return;           for(i=0;i<fssum && i<MAXFSLINENUM;i++){    x=fscolumex+fscolumewidth*(i+1)/MAXFSLINENUM; 

⌨️ 快捷键说明

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