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

📄 axis.java

📁 java 作图的程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                 if( Math.abs(label_value[i]) <= 0.0001 && drawzero ) {                      c = g.getColor();                      if(zerocolor != null) g.setColor(zerocolor);                      g.drawLine(x0,y0,x0,y0+data_window.height*direction);                      g.setColor(c);                                       } else                  if( drawgrid ) {                      c = g.getColor();                      if(gridcolor != null) g.setColor(gridcolor);                      g.drawLine(x0,y0,x0,y0+data_window.height*direction);                      g.setColor(c);                 }                 x1 = x0;                 y1 = y0 + major_tic_size*direction;                 g.drawLine(x0,y0,x1,y1);              }              minor = val + minor_step;              for(j=0; j<minor_tic_count; j++) {                 if( minor >= vmin && minor <= vmax ) {                    y0 = amin.y;                    x0 = amin.x + (int)( ( minor - minimum ) * scale);                    if( drawgrid ) {                      c = g.getColor();                      if(gridcolor != null) g.setColor(gridcolor);                      g.drawLine(x0,y0,x0,y0+data_window.height*direction);                      g.setColor(c);                    }                    x1 = x0;                    y1 = y0 + minor_tic_size*direction;                    g.drawLine(x0,y0,x1,y1);                 }                minor += minor_step;              }              val += label_step;          }          if(position == TOP ) {             offset = - label.getLeading(g) - label.getDescent(g);          } else {             offset = + label.getLeading(g) + label.getAscent(g);          }          val = label_start;          for(i=0; i<label_count; i++) {              if( val >= vmin && val <= vmax ) {                 y0 = amin.y + offset;                 x0 = amin.x + (int)(( val - minimum ) * scale);                 label.setText(label_string[i]);                 label.draw(g,x0,y0,TextLine.CENTER);              }              val += label_step;          }          if( !exponent.isNull() ) {             if(position == TOP ) {                y0 = amin.y - label.getLeading(g)                             - label.getDescent(g)                            - exponent.getLeading(g)                            - exponent.getDescent(g);             } else {                y0 = amax.y + label.getLeading(g)                             + label.getAscent(g)                            + exponent.getLeading(g)                            + exponent.getAscent(g);             }              x0 = amax.x;                            exponent.draw(g,x0,y0,TextLine.LEFT);          }          if( !title.isNull() ) {             if(position == TOP ) {                y0 = amin.y - label.getLeading(g)                             - label.getDescent(g)                            - title.getLeading(g)                            - title.getDescent(g);             } else {                y0 = amax.y + label.getLeading(g)                             + label.getAscent(g)                            + title.getLeading(g)                            + title.getAscent(g);             }              x0 = amin.x + ( amax.x - amin.x)/2;                            title.draw(g,x0,y0,TextLine.CENTER);          }     }  /**   * Draw a Vertical Axis.   * @param g Graphics context.   */     protected void drawVAxis(Graphics g) {          Graphics lg;          int i;          int j;          int x0,y0,x1,y1;          int direction;          int offset = 0;          double minor_step;          double minor;          Color c;                    FontMetrics fm;          Color gc = g.getColor();          Font  gf = g.getFont();          double vmin = minimum*1.001;          double vmax = maximum*1.001;          double scale  = (amax.y - amin.y)/(maximum - minimum);          double val;//          System.out.println("Drawing Vertical Axis!");          if( axiscolor != null) g.setColor(axiscolor);          g.drawLine(amin.x,amin.y,amax.x,amax.y);          if(position == RIGHT )     direction = -1;          else                       direction =  1;          minor_step = label_step/(minor_tic_count+1);          val = label_start;          for(i=0; i<label_count; i++) {              if( val >= vmin && val <= vmax ) {                 x0 = amin.x;                 y0 = amax.y - (int)( ( val - minimum ) * scale);                 if( Math.abs(label_value[i]) <= 0.0001 && drawzero ) {                      c = g.getColor();                      if(zerocolor != null) g.setColor(zerocolor);                      g.drawLine(x0,y0,x0+data_window.width*direction,y0);                      g.setColor(c);                 } else                 if( drawgrid ) {                      c = g.getColor();                      if(gridcolor != null) g.setColor(gridcolor);                      g.drawLine(x0,y0,x0+data_window.width*direction,y0);                      g.setColor(c);                 }                 x1 = x0 + major_tic_size*direction;                 y1 = y0;                 g.drawLine(x0,y0,x1,y1);              }              minor = val + minor_step;              for(j=0; j<minor_tic_count; j++) {                 if( minor >= vmin && minor <= vmax ) {                    x0 = amin.x;                    y0 = amax.y - (int)( ( minor - minimum ) * scale);                    if( drawgrid ) {                      c = g.getColor();                      if(gridcolor != null) g.setColor(gridcolor);                      g.drawLine(x0,y0,x0+ data_window.width*direction,y0);                      g.setColor(c);                    }                    x1 = x0 + minor_tic_size*direction;                    y1 = y0;                    g.drawLine(x0,y0,x1,y1);                 }                minor += minor_step;              }              val += label_step;          }          val = label_start;          for(i=0; i<label_count; i++) {              if( val >= vmin && val <= vmax ) {                 x0 = amin.x + offset;                 y0 = amax.y - (int)(( val - minimum ) * scale) +                              label.getAscent(g)/2;                                  if(position == RIGHT ) {                    label.setText(" "+label_string[i]);                    label.draw(g,x0,y0,TextLine.LEFT);                 } else {                    label.setText(label_string[i]+" ");                    label.draw(g,x0,y0,TextLine.RIGHT);		  }              }              val += label_step;          }          if( !exponent.isNull() ) {             y0 = amin.y;             if(position == RIGHT ) {                 x0  =  amin.x + max_label_width + exponent.charWidth(g,' ');                 exponent.draw(g,x0,y0,TextLine.LEFT);             } else {                 x0 =  amin.x - max_label_width - exponent.charWidth(g,' ');                 exponent.draw(g,x0,y0,TextLine.RIGHT);             }           }          if( !title.isNull() ) {             y0 = amin.y + (amax.y-amin.y)/2;             if( title.getRotation() == 0 || title.getRotation() == 180 ) {               if(position == RIGHT ) {                    x0 =  amin.x + max_label_width + title.charWidth(g,' ');                    title.draw(g,x0,y0,TextLine.LEFT);               } else {                    x0 =  amin.x - max_label_width - title.charWidth(g,' ');                    title.draw(g,x0,y0,TextLine.RIGHT);               }             } else {               title.setJustification(TextLine.CENTER);               if(position == RIGHT ) {                    x0 =  amin.x + max_label_width - title.getLeftEdge(g)+                          + title.charWidth(g,' ');               } else {                    x0 =  amin.x - max_label_width - title.getRightEdge(g)                              - title.charWidth(g,' ');               }               title.draw(g,x0,y0);             }            } }  /**   * Attach a DataSet to a Horizontal Axis   * @param d dataset to attach.   */      protected void attachXdata( DataSet d ) {            dataset.addElement(d);            d.xaxis = this;            if( dataset.size() == 1 ) {                  minimum = d.dxmin;                  maximum = d.dxmax;            } else {               if(minimum > d.dxmin) minimum = d.dxmin;               if(maximum < d.dxmax) maximum = d.dxmax;            }      }  /**   * Attach a DataSet to a Vertical Axis   * @param d dataset to attach.   */      protected void attachYdata( DataSet d ) {            dataset.addElement(d);            d.yaxis = this;            if( dataset.size() == 1 ) {                  minimum = d.dymin;                  maximum = d.dymax;            } else {               if(minimum > d.dymin) minimum = d.dymin;               if(maximum < d.dymax) maximum = d.dymax;            }      }  /**   * calculate the labels   */      protected void calculateGridLabels() {        double val;        int i;        int j;                if (Math.abs(minimum) > Math.abs(maximum) )          label_exponent = ((int)Math.floor(                       SpecialFunction.log10(Math.abs(minimum))/3.0) )*3;        else         label_exponent = ((int)Math.floor(                       SpecialFunction.log10(Math.abs(maximum))/3.0) )*3;        label_step = RoundUp( (maximum-minimum)/guess_label_number );        label_start = Math.floor( minimum/label_step )*label_step;        val = label_start;        label_count = 1;        while(val < maximum) { val += label_step; label_count++; }        label_string = new String[label_count];        label_value  = new float[label_count];//      System.out.println("label_step="+label_step);//      System.out.println("label_start="+label_start);//      System.out.println("label_count="+label_count);//      System.out.println("label_exponent"+label_exponent);                   for(i=0; i<label_count; i++) {            val = label_start + i*label_step;            if( label_exponent< 0 ) {                  for(j=label_exponent; j<0;j++) { val *= 10; }            } else {                  for(j=0; j<label_exponent;j++) { val /= 10; }            }            label_string[i] = String.valueOf(val);            label_value[i] = (float)val;        }      }/********************** Private Methods******************/  /**   * Round up the passed value to a NICE value.   */      private double RoundUp( double val ) {          int exponent;          int i;          exponent = (int)(Math.floor( SpecialFunction.log10(val) ) );          if( exponent < 0 ) {             for(i=exponent; i<0; i++) { val *= 10.0; }          } else {             for(i=0; i<exponent; i++) { val /= 10.0; }          }          if( val > 5.0 )     val = 10.0;          else          if( val > 2.0 )     val = 5.0;          else          if( val > 1.0 )     val = 2.0;          else                              val = 1.0;          if( exponent < 0 ) {             for(i=exponent; i<0; i++) { val /= 10.0; }          } else {             for(i=0; i<exponent; i++) { val *= 10.0; }          }                    return val;      }                  }

⌨️ 快捷键说明

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